{"id":470,"name":"uvicorn","ecosystem":"pip","repository_url":"https://github.com/encode/uvicorn","issues_count":6622,"created_at":"2025-06-06T15:01:34.740Z","updated_at":"2025-06-06T15:01:34.740Z","purl":"pkg:pypi/uvicorn","metadata":{"id":2961584,"name":"uvicorn","ecosystem":"pypi","description":"The lightning-fast ASGI server.","homepage":"https://www.uvicorn.org/","licenses":"BSD License","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/encode/uvicorn","keywords_array":[],"namespace":null,"versions_count":177,"first_release_published_at":"2017-06-05T11:32:15.000Z","latest_release_published_at":"2025-06-01T07:48:15.000Z","latest_release_number":"0.34.3","last_synced_at":"2025-06-06T09:00:46.406Z","created_at":"2022-04-10T12:59:01.052Z","updated_at":"2025-06-06T09:00:46.407Z","registry_url":"https://pypi.org/project/uvicorn/","install_command":"pip install uvicorn --index-url https://pypi.org/simple","documentation_url":"https://uvicorn.readthedocs.io/","metadata":{"funding":"https://github.com/sponsors/encode","documentation":null,"classifiers":["Development Status :: 4 - Beta","Environment :: Web Environment","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Internet :: WWW/HTTP"],"normalized_name":"uvicorn"},"repo_metadata":{"id":37451138,"uuid":"92946971","full_name":"encode/uvicorn","owner":"encode","description":"An ASGI web server, for Python. 🦄","archived":false,"fork":false,"pushed_at":"2024-05-01T11:26:56.000Z","size":3254,"stargazers_count":7864,"open_issues_count":50,"forks_count":680,"subscribers_count":91,"default_branch":"master","last_synced_at":"2024-05-01T11:27:34.362Z","etag":null,"topics":["asgi","asyncio","http","http-server","python"],"latest_commit_sha":null,"homepage":"https://www.uvicorn.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/encode.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"encode"}},"created_at":"2017-05-31T13:13:43.000Z","updated_at":"2024-07-20T10:20:10.430Z","dependencies_parsed_at":"2024-01-16T21:25:02.774Z","dependency_job_id":"382151ea-0095-4335-9e80-32c507604691","html_url":"https://github.com/encode/uvicorn","commit_stats":{"total_commits":1036,"total_committers":162,"mean_commits":6.395061728395062,"dds":0.6003861003861004,"last_synced_commit":"6dcb6a6b9456c08d502373285e0c2bfd73d9c19e"},"previous_names":[],"tags_count":165,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/encode","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217517872,"owners_count":16189448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"encode","name":"Encode","uuid":"19159390","kind":"organization","description":"Collaboratively funded software development.","email":null,"website":"http://www.encode.io/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/19159390?v=4","repositories_count":21,"last_synced_at":"2024-05-20T14:38:02.878Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/encode","funding_links":["https://github.com/sponsors/encode"],"total_stars":74130,"followers":1364,"following":0,"created_at":"2022-11-02T16:26:41.661Z","updated_at":"2024-05-20T14:38:06.835Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/encode","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/encode/repositories"},"tags":[{"name":"0.30.3","sha":"5bf788f0eb0fc771f5c4eed8f282c7ec256565d2","kind":"commit","published_at":"2024-07-20T08:58:34.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.30.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.30.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.3/manifests"},{"name":"0.30.2","sha":"ca24e1b52ca21e2dbe9c94824e042524fc06b831","kind":"commit","published_at":"2024-07-20T07:29:08.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.30.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.30.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.2/manifests"},{"name":"0.30.1","sha":"44a3071654d6bfb4449da46aa885769820c4f0da","kind":"commit","published_at":"2024-06-02T08:20:15.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.30.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.30.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.1/manifests"},{"name":"0.30.0","sha":"9a6b3a8249df6e38f3683c457df8297fb1319d80","kind":"commit","published_at":"2024-05-28T07:18:48.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.30.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.30.0/manifests"},{"name":"0.29.0","sha":"fe85206c5c79be52910ff1b7049591adbab72e4d","kind":"commit","published_at":"2024-03-20T06:41:04.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.29.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.29.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.29.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.29.0/manifests"},{"name":"0.28.1","sha":"f73b8beeb1499ca5fcec3067cf89dad5326a0984","kind":"commit","published_at":"2024-03-19T08:33:35.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.28.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.28.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.28.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.28.1/manifests"},{"name":"0.28.0","sha":"a05ae6426cc8f224f4f1a995f46a901ab0f5644b","kind":"commit","published_at":"2024-03-09T09:18:55.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.28.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.28.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.28.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.28.0/manifests"},{"name":"0.27.1","sha":"bd552df8f95716d53eb6fdea80b8d6d34cbc1968","kind":"commit","published_at":"2024-02-10T12:07:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.27.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.27.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.27.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.27.1/manifests"},{"name":"0.27.0.post1","sha":"f39933c8501dd6bc2e8e0f5be45819d3ba2caad0","kind":"commit","published_at":"2024-01-29T09:29:09.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.27.0.post1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.27.0.post1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.27.0.post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.27.0.post1/manifests"},{"name":"0.27.0","sha":"892c7888ec613c49dd5ff826c58acc6c7e349955","kind":"commit","published_at":"2024-01-21T12:38:34.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.27.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.27.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.27.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.27.0/manifests"},{"name":"0.26.0","sha":"99fafb3c3b15e32dbaa504993161cb0c6898227f","kind":"commit","published_at":"2024-01-16T17:53:53.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.26.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.26.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.26.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.26.0/manifests"},{"name":"0.25.0","sha":"b52f3f97842dfa59cbef2e1e6f6606d8ea21e4c2","kind":"commit","published_at":"2023-12-20T21:40:57.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.25.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.25.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.25.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.25.0/manifests"},{"name":"0.24.0.post1","sha":"bf04afb292fd8704f8b5f24ae113ba74eab3c2e4","kind":"commit","published_at":"2023-11-06T06:35:46.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.24.0.post1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.24.0.post1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.24.0.post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.24.0.post1/manifests"},{"name":"0.24.0","sha":"5f142a884ed52790a38b8e34df7060a0c3c6c760","kind":"commit","published_at":"2023-11-04T19:28:44.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.24.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.24.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.24.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.24.0/manifests"},{"name":"0.23.2","sha":"f3040fba6a9c628c95fd510bcd9714367a0f4f4e","kind":"commit","published_at":"2023-07-31T05:59:09.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.23.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.23.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.23.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.23.2/manifests"},{"name":"0.23.1","sha":"bf8f52bec7af4cf391dcabade49213213c5ac84b","kind":"commit","published_at":"2023-07-18T08:03:00.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.23.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.23.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.23.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.23.1/manifests"},{"name":"0.23.0","sha":"cd18c3b14aa810a4a6ebb264b9a297d6f8afb9ac","kind":"commit","published_at":"2023-07-15T06:24:58.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.23.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.23.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.23.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.23.0/manifests"},{"name":"0.22.0","sha":"71043a9c8fb6436a63110179650e32bcae4a6cbf","kind":"commit","published_at":"2023-04-28T00:51:50.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.22.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.22.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.22.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.22.0/manifests"},{"name":"0.21.1","sha":"73b7bcdcaa663dd9d74a9fcadea0ce3ec1761f2f","kind":"commit","published_at":"2023-03-16T12:28:24.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.21.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.21.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.21.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.21.1/manifests"},{"name":"0.21.0","sha":"c4591651e2488e7ec303dffe387345ca22b940c6","kind":"commit","published_at":"2023-03-09T23:05:44.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.21.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.21.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.21.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.21.0/manifests"},{"name":"0.20.0","sha":"448be75222093041561d136f9f2f5577d6e361ee","kind":"commit","published_at":"2022-11-20T12:32:47.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.20.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.20.0/manifests"},{"name":"0.19.0","sha":"b06cc6376dfc566637a79607d5755d9519b3d6c6","kind":"commit","published_at":"2022-10-19T19:58:06.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.19.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.19.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.19.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.19.0/manifests"},{"name":"0.18.3","sha":"ccd1aae48e49dd8c9365600fd79e886efe88be1d","kind":"commit","published_at":"2022-08-24T07:31:49.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.18.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.18.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.3/manifests"},{"name":"0.18.2","sha":"e674b96c4f9e20c2f6501b0c9e292d386931f9d0","kind":"commit","published_at":"2022-06-27T11:51:23.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.18.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.18.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.2/manifests"},{"name":"0.18.1","sha":"11d28e208504436e7e06603a941c01b76f54346f","kind":"commit","published_at":"2022-06-23T08:19:27.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.18.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.18.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.1/manifests"},{"name":"0.18.0","sha":"5ee093b37cb410a462bdeec4ade365298d82bd30","kind":"commit","published_at":"2022-06-23T07:38:15.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.18.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.18.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.18.0/manifests"},{"name":"0.17.6","sha":"83986d822686739dc033495494ebdc88c4e266e8","kind":"commit","published_at":"2022-03-11T08:51:21.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.6/manifests"},{"name":"0.17.5","sha":"b6b783bb8d2148355b644ab5d143e94a958e511d","kind":"commit","published_at":"2022-02-16T12:53:38.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.5/manifests"},{"name":"0.17.4","sha":"2f22bca659cdcaea6ed37e5c9aa128bf99150eb6","kind":"commit","published_at":"2022-02-04T09:47:51.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.4/manifests"},{"name":"0.17.3","sha":"1c20f546574cc905a8b28a5390c3f815e27a84ab","kind":"commit","published_at":"2022-02-03T15:33:56.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.3/manifests"},{"name":"0.17.2","sha":"41e339dd953a00d071c8bb5704f4671564f9f6e1","kind":"commit","published_at":"2022-02-03T13:43:06.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.2/manifests"},{"name":"0.17.1","sha":"4adff7b5f85d388904e5ec53bf76334d773331b1","kind":"commit","published_at":"2022-01-28T10:15:19.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.1/manifests"},{"name":"0.17.0.post1","sha":"e659cf5d87c2aaf9ca8863625be436d7694471a4","kind":"commit","published_at":"2022-01-24T15:32:34.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.0.post1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.0.post1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.0.post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.0.post1/manifests"},{"name":"0.17.0","sha":"59eeae66e926a7c6c1b6fd1a6d8fbe31719ab1c3","kind":"commit","published_at":"2022-01-14T10:44:39.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.17.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.17.0/manifests"},{"name":"0.16.0","sha":"65ec8d132c37a8338a2f495fa1be9f14bd4368d9","kind":"commit","published_at":"2021-12-08T11:41:30.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.16.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.16.0/manifests"},{"name":"0.15.0","sha":"a6dff714f03d4b2434fa2ca6d800d2f42d8477ef","kind":"commit","published_at":"2021-08-13T17:02:33.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.15.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.15.0/manifests"},{"name":"0.14.0","sha":"87da6cf4082cd28306bdb78d7d42552d131cc179","kind":"commit","published_at":"2021-06-01T09:30:02.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.14.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.14.0/manifests"},{"name":"0.13.4","sha":"2a7634d190787aac8fce757146206565feba30fa","kind":"commit","published_at":"2021-02-20T16:48:34.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.13.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.13.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.4/manifests"},{"name":"0.13.3","sha":"fa914bc8b3af38017f2438770616cab46f600141","kind":"commit","published_at":"2020-12-29T16:40:53.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.13.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.13.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.3/manifests"},{"name":"0.13.2","sha":"7a667a582baf374ad40775af77ce6271b473d0f0","kind":"commit","published_at":"2020-12-20T08:40:05.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.13.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.13.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.2/manifests"},{"name":"0.13.1","sha":"1f282e0218d09dd8859f68c9456bde3e17744c27","kind":"commit","published_at":"2020-12-12T11:55:14.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.13.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.13.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.1/manifests"},{"name":"0.13.0","sha":"41a8be451da598d54b99c7ecf948bbd3937d8bda","kind":"commit","published_at":"2020-12-08T16:17:56.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.13.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.13.0/manifests"},{"name":"0.12.3","sha":"0b941abfbb527d102d11e950c2fea1f9ecf1988f","kind":"commit","published_at":"2020-11-22T09:31:45.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.12.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.12.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.3/manifests"},{"name":"0.12.2","sha":"cca3c3e1968937bbd0cb366dcefc8b33dbac39b9","kind":"commit","published_at":"2020-10-19T15:45:56.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.12.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.12.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.2/manifests"},{"name":"0.12.1","sha":"cd00516c6c5d22e83ceb1d786f80a340ab388e6f","kind":"commit","published_at":"2020-09-30T13:13:26.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.12.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.1/manifests"},{"name":"0.12.0","sha":"342c68d36502ce0849f165836744365ad0462c80","kind":"commit","published_at":"2020-09-28T09:57:00.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.12.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.12.0/manifests"},{"name":"0.11.8","sha":"4597b90ffcfb99e44dae6c7d8cc05e1f368e0624","kind":"commit","published_at":"2020-07-31T15:47:20.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.8","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.8/manifests"},{"name":"0.11.7","sha":"178bee6ef51c79b296ca70a467f00da20dfae712","kind":"commit","published_at":"2020-07-28T13:17:52.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.7","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.7/manifests"},{"name":"0.11.6","sha":"f6239169708adcf27433cb8d133e48f8835f0fa2","kind":"commit","published_at":"2020-07-17T12:19:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.6/manifests"},{"name":"0.11.5","sha":"b2b756e13d17bccf95c3bc61d4b23207d11260a2","kind":"commit","published_at":"2020-04-29T10:43:10.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.5/manifests"},{"name":"0.11.4","sha":"70f023e78415b45214f8cfe4de8a11acb710e51f","kind":"commit","published_at":"2020-04-28T15:21:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.4/manifests"},{"name":"0.11.3","sha":"f850b73c1b1983daf9d7f7783e4a20ebe5707cb4","kind":"tag","published_at":"2020-02-17T16:23:46.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.3/manifests"},{"name":"0.11.2","sha":"bfb2dcc624c874f7438f2715eec6c87a4d9d49ce","kind":"tag","published_at":"2020-01-20T12:34:41.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.2/manifests"},{"name":"0.11.1","sha":"13094d9c98510237d8db2cf490130a08873ca491","kind":"tag","published_at":"2019-12-20T11:55:03.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.1/manifests"},{"name":"0.11.0","sha":"77e43f80accda56d130f048cb07b93f606fc8fda","kind":"tag","published_at":"2019-12-20T11:23:39.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.11.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.11.0/manifests"},{"name":"0.10.9","sha":"473521952da46a1c81bb73ada13002d1084baf79","kind":"tag","published_at":"2019-12-19T15:36:08.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.9","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.9/manifests"},{"name":"0.10.8","sha":"020dd085a0a5b609f14ddd2b36fc0a97ba4df019","kind":"tag","published_at":"2019-11-12T16:36:48.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.8","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.8/manifests"},{"name":"0.10.7","sha":"65f9fa3b7ddb2e90ae92cb4bc05c3f5afe920cb7","kind":"tag","published_at":"2019-11-12T15:10:09.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.7","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.7/manifests"},{"name":"0.10.6","sha":"0a5865184a37a30cebe342efb98834191ddddc21","kind":"tag","published_at":"2019-11-12T13:29:14.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.6/manifests"},{"name":"0.10.5","sha":"a20c18841bebc9cbe521eb9211b7cc79438710f5","kind":"tag","published_at":"2019-11-12T09:18:29.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.5/manifests"},{"name":"0.10.4","sha":"e821fd1ff5653f989d500d41fa6ba070858f6843","kind":"tag","published_at":"2019-11-09T13:33:55.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.4/manifests"},{"name":"0.10.3","sha":"42a5dec3b90b7dc52d74ee02626fd4e38ecfccab","kind":"tag","published_at":"2019-11-01T10:31:10.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.3/manifests"},{"name":"0.10.2","sha":"080d5e0422142d58c3690dc1aa1298af041a35e3","kind":"tag","published_at":"2019-10-31T13:12:26.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.2/manifests"},{"name":"0.10.1","sha":"95c83d97082350175bf0f231e182f9f4da041e7b","kind":"tag","published_at":"2019-10-31T11:34:00.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.1/manifests"},{"name":"0.10.0","sha":"e0fda1fca6e4e2d6399892e329617b8c10dd5817","kind":"tag","published_at":"2019-10-29T16:49:27.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.10.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.10.0/manifests"},{"name":"0.9.1","sha":"94aec709ce6dcd5fb9a78f33caa0c593161c48a8","kind":"tag","published_at":"2019-10-21T14:27:22.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.9.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.9.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.9.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.9.1/manifests"},{"name":"0.9.0","sha":"e0a77de6baf436d182868fa280cd5e2f0d66501c","kind":"tag","published_at":"2019-09-06T16:04:32.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.9.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.9.0/manifests"},{"name":"0.8.6","sha":"e95e995781c7d1d8661b4f94631e3adb77c85237","kind":"tag","published_at":"2019-08-01T16:42:37.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.8.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.8.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.6/manifests"},{"name":"0.8.5","sha":"997af88d5210a8d07e2a08abe9ae944e115c0ae3","kind":"tag","published_at":"2019-08-01T16:41:27.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.8.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.8.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.5/manifests"},{"name":"0.8.4","sha":"15c4e9cfe2d996bd73ed6b542e44160f620b9519","kind":"tag","published_at":"2019-07-11T15:13:13.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.8.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.8.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.4/manifests"},{"name":"0.8.3","sha":"d109643d2192de1fd5b56ebcc21bc64d3fe0da30","kind":"tag","published_at":"2019-06-28T11:41:19.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.8.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.3/manifests"},{"name":"0.8.2","sha":"33843f64e618bbf07025b35963a4dda8fd8eb23a","kind":"tag","published_at":"2019-06-21T14:38:44.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.8.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.2/manifests"},{"name":"0.8.1","sha":"e2eb9a01c1cee3d821dbba85c8c6709fdb8eab4e","kind":"tag","published_at":"2019-06-18T15:57:29.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.8.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.1/manifests"},{"name":"0.8.0","sha":"502a265746bfe37466ff0c67647d295ec468db26","kind":"tag","published_at":"2019-06-18T14:19:18.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.8.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.8.0/manifests"},{"name":"0.7.3","sha":"a7ddb2987f57ab0f7acedef70f49b0ff323618eb","kind":"tag","published_at":"2019-06-18T10:57:28.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.7.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.3/manifests"},{"name":"0.7.2","sha":"a2b598ef18a52407a9b4291c67d0b90a7bd4be66","kind":"tag","published_at":"2019-06-05T09:02:57.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.7.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.2/manifests"},{"name":"0.7.1","sha":"545a2a10859165db016d02a641f0c30d07476af1","kind":"tag","published_at":"2019-05-02T11:04:57.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.7.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.1/manifests"},{"name":"0.7.0","sha":"b4c138910bb63475efd028627e10adda722e4937","kind":"tag","published_at":"2019-04-18T09:46:33.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.7.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.0/manifests"},{"name":"0.7.0.b2","sha":"a7576c602b873967b629fa7e8f7494cbd6b9273b","kind":"tag","published_at":"2019-03-29T13:23:17.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.7.0.b2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.7.0.b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.0.b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.0.b2/manifests"},{"name":"0.7.0.b1","sha":"b2b5410a72f9ef9870dc4443f0fc3a659916e509","kind":"tag","published_at":"2019-03-20T13:37:03.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.7.0.b1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.7.0.b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.0.b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.7.0.b1/manifests"},{"name":"0.6.1","sha":"e7d2a1b6fc7781b9236b7aa2716876d20c13ebe6","kind":"tag","published_at":"2019-03-14T16:44:23.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.6.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.6.1/manifests"},{"name":"0.6.0","sha":"d1d27c0b21ece5e9f64713c1cce36c12a8b10efc","kind":"tag","published_at":"2019-03-12T16:24:47.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.6.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.6.0/manifests"},{"name":"0.5.2","sha":"c6564ce6bd7c1e33196c05484e1accd1472d24f4","kind":"tag","published_at":"2019-03-11T16:00:27.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.5.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.5.2/manifests"},{"name":"0.5.1","sha":"38813a7aaa3edaaac7c695ce895388248983ff1b","kind":"tag","published_at":"2019-03-05T10:28:22.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.5.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.5.1/manifests"},{"name":"0.5.0","sha":"53986ddab2a3501049c9490372a1cb7febedde31","kind":"tag","published_at":"2019-03-04T13:40:01.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.5.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.5.0/manifests"},{"name":"0.4.6","sha":"5db1480fe5eac303df4fcf41b23ff51132d0240f","kind":"tag","published_at":"2019-02-25T10:56:40.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.4.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.4.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.6/manifests"},{"name":"0.4.5","sha":"931c029c4a7b1bad8a5e09d0b75d6bc8340d17ad","kind":"tag","published_at":"2019-02-18T10:47:26.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.4.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.5/manifests"},{"name":"0.4.4","sha":"29733336cdc739fc49763f55c059ce6ffea23399","kind":"tag","published_at":"2019-02-14T09:38:20.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.4.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.4/manifests"},{"name":"0.4.3","sha":"e5062880f3a7e3e5965d89aae75f7fa40390a08e","kind":"tag","published_at":"2019-02-07T12:07:26.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.4.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.3/manifests"},{"name":"0.4.2","sha":"0709dad09f3ed2306818e91755e2c3b73ae22f25","kind":"tag","published_at":"2019-02-05T12:10:54.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.4.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.2/manifests"},{"name":"0.4.1","sha":"3351534d1262c76ef284c46aea1626806bb19f39","kind":"tag","published_at":"2019-01-25T21:23:35.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.4.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.1/manifests"},{"name":"0.4.0","sha":"e3bf7b6ac644034dbb1fedde994d66b9ff2d866c","kind":"tag","published_at":"2019-01-25T12:24:42.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.4.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.4.0/manifests"},{"name":"0.3.32","sha":"f1fdd93f4018c43841ed4ad08afb7b8b6f7104fd","kind":"tag","published_at":"2019-01-23T16:04:08.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.32","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.32","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.32","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.32/manifests"},{"name":"0.3.31","sha":"2b5886767352a5d15f0cc56fe04e69a036135aa0","kind":"tag","published_at":"2019-01-22T16:19:13.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.31","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.31","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.31","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.31/manifests"},{"name":"0.3.30","sha":"c92f976e71d94cfa6187dbe839871262c3c14a1b","kind":"tag","published_at":"2019-01-22T00:03:45.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.30","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.30","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.30","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.30/manifests"},{"name":"0.3.29","sha":"81a8195519e96e1b58f1badcd612f2e6ea18c8e2","kind":"tag","published_at":"2019-01-21T16:21:44.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.29","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.29","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.29","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.29/manifests"},{"name":"0.3.28","sha":"e9c9e41fc4d8df2bad06a07170abe97c8c00ff52","kind":"tag","published_at":"2019-01-21T15:41:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.28","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.28","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.28","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.28/manifests"},{"name":"0.3.27","sha":"6a8cc8f1c3926e5485cdf526bb30269203933b49","kind":"tag","published_at":"2019-01-21T15:39:19.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.27","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.27","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.27","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.27/manifests"},{"name":"0.3.26","sha":"a01d1006bcb1350122d0be12c885301a76fb705a","kind":"tag","published_at":"2019-01-21T14:16:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.26","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.26","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.26","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.26/manifests"},{"name":"0.3.25","sha":"da4348e474cd7fcdda72560b30538115fcf906f9","kind":"tag","published_at":"2019-01-18T11:04:19.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.25","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.25","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.25","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.25/manifests"},{"name":"0.3.24","sha":"f6f173c16887b4fceeec8ebf62808ea7a6111472","kind":"tag","published_at":"2019-01-02T16:24:55.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.24","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.24","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.24","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.24/manifests"},{"name":"0.3.23","sha":"523495576cfbb156bc5bc18b131b6a1e61c23076","kind":"tag","published_at":"2018-12-18T13:37:16.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.23","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.23","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.23","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.23/manifests"},{"name":"0.3.22","sha":"6ec0da77c9dc8c7e4e966d141db6d1d81dff088d","kind":"tag","published_at":"2018-12-07T13:50:42.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.22","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.22","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.22","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.22/manifests"},{"name":"0.3.21","sha":"edfebcaa76f2796195073434d66aaf58e3bf8e39","kind":"tag","published_at":"2018-11-19T10:48:13.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.21","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.21/manifests"},{"name":"0.3.20","sha":"b420242ab7e5336cfca8a8bd16795e0ab21af889","kind":"tag","published_at":"2018-11-06T13:09:52.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.20","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.20/manifests"},{"name":"0.3.19","sha":"ee717611ae5b115d0d47d4b1aec7c24d8a2d48ab","kind":"tag","published_at":"2018-11-05T16:31:03.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.19","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.19/manifests"},{"name":"0.3.18","sha":"ae17436a17efdacac65a8bb44a9f2c88c498f238","kind":"tag","published_at":"2018-11-05T12:32:43.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.18","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.18/manifests"},{"name":"0.3.17","sha":"61baa8ceb0059943f6396e731521bf982198c9b6","kind":"tag","published_at":"2018-10-29T16:00:48.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.17","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.17/manifests"},{"name":"0.3.16","sha":"75b9991fa9f23e87367c60bd9dffef97439af733","kind":"tag","published_at":"2018-10-22T19:57:34.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.16","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.16/manifests"},{"name":"0.3.15","sha":"aad6aaad5ceef0f31eb08749264830919a3473ab","kind":"tag","published_at":"2018-10-22T14:20:51.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.15","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.15/manifests"},{"name":"0.3.14","sha":"c754a22105e4f9399222ec16ac7c5fdaf832784c","kind":"tag","published_at":"2018-10-19T13:03:59.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.14","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.14/manifests"},{"name":"0.3.13","sha":"c136f97c1b04ae690df835eb3cf4055df6b7385b","kind":"tag","published_at":"2018-10-16T14:07:03.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.13","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.13/manifests"},{"name":"0.3.12","sha":"21494a0e7b4a063793ec1165c9e94b2c09ead2aa","kind":"tag","published_at":"2018-10-09T15:07:32.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.12","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.12/manifests"},{"name":"0.3.11","sha":"15655d874d00bccede3dbfa8ef2eaaebc1693f86","kind":"tag","published_at":"2018-10-09T13:34:29.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.11","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.11/manifests"},{"name":"0.3.10","sha":"9a9749eaa2c041e8e67fa7f9ba6c118346e2121d","kind":"tag","published_at":"2018-10-09T12:56:24.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.10","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.10/manifests"},{"name":"0.3.9","sha":"11469efeee8266f8f55e99ac690ebf3a4416d43c","kind":"tag","published_at":"2018-10-05T09:30:29.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.9","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.9/manifests"},{"name":"0.3.8","sha":"e46af0a483338fb83b2e7ea7610c31ddff701426","kind":"tag","published_at":"2018-10-04T13:57:44.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.8","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.8/manifests"},{"name":"0.3.7","sha":"144fb82acfcc4a844a9a411250b1829ca7c22dba","kind":"tag","published_at":"2018-10-04T12:59:09.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.7","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.7/manifests"},{"name":"0.3.6","sha":"819d11889d013d864023d061efbd183cbf6f47f2","kind":"tag","published_at":"2018-09-28T09:03:23.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.6/manifests"},{"name":"0.3.5","sha":"919af04b65c72140fa1ffbd8945d375c9de06188","kind":"tag","published_at":"2018-09-07T09:51:03.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.5/manifests"},{"name":"0.3.4","sha":"ea583191d456875d23dd6b1ed31eedb5c12aee56","kind":"tag","published_at":"2018-09-06T09:13:33.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.4/manifests"},{"name":"0.3.3","sha":"dc121ec6848a7d1e1798df240a45c090e9b6a479","kind":"tag","published_at":"2018-09-05T08:50:53.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.3/manifests"},{"name":"0.3.2","sha":"4e1038a5a41c17cd07c60259c0055d5fe0276a5e","kind":"tag","published_at":"2018-08-17T16:03:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.2/manifests"},{"name":"0.3.1","sha":"cf7bacb5d687799406517a570694528910b11b91","kind":"tag","published_at":"2018-08-15T10:30:53.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.1/manifests"},{"name":"0.3.0","sha":"b0044be529c22dc075559ff12f688c0189610276","kind":"tag","published_at":"2018-08-14T12:46:38.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.3.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.3.0/manifests"},{"name":"0.2.22","sha":"4422c0c88c432ecaa244c8919f96b8f16f6598bd","kind":"tag","published_at":"2018-07-27T12:36:54.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.22","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.22","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.22","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.22/manifests"},{"name":"0.2.21","sha":"0f7df3294342fb8748aeabffa675609e6421ff0d","kind":"tag","published_at":"2018-07-25T12:12:53.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.21","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.21/manifests"},{"name":"0.2.20","sha":"22041dab4b1aba9c9ba19b27ff5e6d38568edc20","kind":"tag","published_at":"2018-07-23T12:25:01.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.20","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.20/manifests"},{"name":"0.2.19","sha":"eb07827f19d1ae8992623ff510aecee9303d2f05","kind":"tag","published_at":"2018-07-20T14:30:27.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.19","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.19/manifests"},{"name":"0.2.18","sha":"84ecdbdfe9baa0f80a0494f60eac5726022d684d","kind":"tag","published_at":"2018-07-20T11:13:19.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.18","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.18/manifests"},{"name":"0.2.17","sha":"9599958b6c08a4cf42ecb53ae1259eb7b0fd126d","kind":"tag","published_at":"2018-07-19T15:56:27.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.17","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.17/manifests"},{"name":"0.2.16","sha":"a689adf49dbfc58c40ae4bf6e5be1ab9ff93bcc3","kind":"tag","published_at":"2018-07-19T15:39:25.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.16","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.16/manifests"},{"name":"0.2.15","sha":"3819c7d73d4873563001badc372173b862864963","kind":"tag","published_at":"2018-07-19T14:10:01.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.15","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.15/manifests"},{"name":"0.2.14","sha":"2321ee43cc5f668cb3dbf1c69bc34f09cf4a7700","kind":"tag","published_at":"2018-07-19T10:55:38.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.14","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.14/manifests"},{"name":"0.2.13","sha":"c1f1d177bbdc9ca17863a472a4a3ca7048d1eeb9","kind":"tag","published_at":"2018-07-18T21:33:18.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.13","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.13/manifests"},{"name":"0.2.12","sha":"1dfb87bd6452b859b5d112d3baa2d1b160915ba8","kind":"tag","published_at":"2018-07-13T13:11:49.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.12","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.12/manifests"},{"name":"0.2.11","sha":"7ba985c495185f35a5ab7497a6879105b9cf393b","kind":"tag","published_at":"2018-07-12T10:15:39.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.11","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.11/manifests"},{"name":"0.2.10","sha":"3339578f757be0041de9aed086c31e0e718ffb72","kind":"tag","published_at":"2018-07-12T09:10:59.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.10","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.10/manifests"},{"name":"0.2.9","sha":"9a933a2ab5f6837353a3ef0e92ac75d32e8803e4","kind":"tag","published_at":"2018-07-10T10:55:22.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.9","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.9/manifests"},{"name":"0.2.8","sha":"ab6ec7440b0ef96778ca193207f1816728f5d2e4","kind":"tag","published_at":"2018-07-10T10:44:33.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.8","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.8/manifests"},{"name":"0.2.7","sha":"4971edd0250008ee3ec1893f1fd289010d8e058b","kind":"tag","published_at":"2018-07-06T10:40:56.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.7","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.7/manifests"},{"name":"0.2.6","sha":"a936ba4beb077f8147d9b7d8ff3ab8e3a57d54fe","kind":"tag","published_at":"2018-07-05T18:13:08.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.6/manifests"},{"name":"0.2.5","sha":"1d13f8bbc5e32be058c90b668711977420752857","kind":"tag","published_at":"2018-07-04T14:31:01.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.5/manifests"},{"name":"0.2.4","sha":"50d869d51f948e8f84911323301d80a80b78539a","kind":"tag","published_at":"2018-07-04T11:05:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.4/manifests"},{"name":"0.2.3","sha":"fb78a20792a96747489f8d370d898efb8964b434","kind":"tag","published_at":"2018-07-02T08:37:22.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.3/manifests"},{"name":"0.2.2","sha":"a5fa68a24f7c0aa5b71704a35bfd8c6326a3ed36","kind":"tag","published_at":"2018-06-29T11:57:50.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.2/manifests"},{"name":"0.2.1","sha":"a5fa68a24f7c0aa5b71704a35bfd8c6326a3ed36","kind":"tag","published_at":"2018-06-29T11:52:16.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"07c6c18945ab4f4167118e717e197adce3aee3da","kind":"tag","published_at":"2018-06-29T11:32:25.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.2.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.2.0/manifests"},{"name":"0.1.1","sha":"73390b9253affc8ed18b6ea42e574e356015ff8b","kind":"tag","published_at":"2018-04-20T10:07:10.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.1.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.1.1/manifests"},{"name":"0.1.0","sha":"bc7da9b038ef28c9c20e15bf9df4b5b54b2b9b96","kind":"tag","published_at":"2018-04-09T12:29:30.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.1.0","html_url":"https://github.com/encode/uvicorn/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.1.0/manifests"},{"name":"0.0.15","sha":"53f728cf2d2946fc616fe1ba08cbd97e9a0ff8af","kind":"tag","published_at":"2017-08-11T13:06:22.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.15","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.15/manifests"},{"name":"0.0.14","sha":"5fc13d2ddf218af3c808151f164a8ccd9cf57898","kind":"tag","published_at":"2017-07-07T14:37:57.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.14","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.14/manifests"},{"name":"0.0.13","sha":"3e329e31c2d8ccee26cc71d28f3e2907a25c2f37","kind":"tag","published_at":"2017-06-29T09:46:17.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.13","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.13/manifests"},{"name":"0.0.12","sha":"af62a14e4030ffba2b42230f929d4ebfa6598c1d","kind":"tag","published_at":"2017-06-27T12:54:09.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.12","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.12/manifests"},{"name":"0.0.11","sha":"687e0de0bbb7963c15b2f40d2995f498b8c1d306","kind":"tag","published_at":"2017-06-27T11:50:32.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.11","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.11/manifests"},{"name":"0.0.10","sha":"3367f9d241b0d1addc5550368bcbdd400b65143a","kind":"tag","published_at":"2017-06-14T16:46:54.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.10","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.10/manifests"},{"name":"0.0.9","sha":"6386b5488af97c2ae2a0514c3fbd9d5b8e741357","kind":"tag","published_at":"2017-06-14T16:44:49.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.9","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.9/manifests"},{"name":"0.0.8","sha":"684b2fc669de3874a0a2b1f5f8957ce9db4293f7","kind":"tag","published_at":"2017-06-14T12:35:07.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.8","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.8/manifests"},{"name":"0.0.7","sha":"80a3ea3db4ead644d8220f6a23981f3ab98336a1","kind":"tag","published_at":"2017-06-13T12:45:15.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.7","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.7/manifests"},{"name":"0.0.6","sha":"2a427204003fc994a78ccecd0ea0773e17a839b2","kind":"tag","published_at":"2017-06-12T13:30:00.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.6","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.6/manifests"},{"name":"0.0.5","sha":"bd9186e44969309916a9d912ecabc5da3a4162e8","kind":"tag","published_at":"2017-06-12T13:04:25.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.5","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.5/manifests"},{"name":"0.0.4","sha":"9379838b016115a06e67fcb1ea0a187083bfc530","kind":"tag","published_at":"2017-06-06T12:25:24.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.4","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.4/manifests"},{"name":"0.0.3","sha":"3e644de311c6ad5fd2b16ab4772b80f51cd286c4","kind":"tag","published_at":"2017-06-05T14:35:11.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.3","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.3/manifests"},{"name":"0.0.2","sha":"990626ea8167a614ec72999a2b7850144c212332","kind":"tag","published_at":"2017-06-05T13:54:56.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.2","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.2/manifests"},{"name":"0.0.1","sha":"c491a8c0f3434d90fae635c5d56e02b33a1936d8","kind":"tag","published_at":"2017-06-05T11:32:27.000Z","download_url":"https://codeload.github.com/encode/uvicorn/tar.gz/0.0.1","html_url":"https://github.com/encode/uvicorn/releases/tag/0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encode%2Fuvicorn/tags/0.0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-08T05:52:06.856Z","dependent_packages_count":1867,"downloads":89505544,"downloads_period":"last-month","dependent_repos_count":50440,"rankings":{"downloads":0.04658780976766622,"dependent_repos_count":0.027695902657155904,"dependent_packages_count":0.015040159058852875,"stargazers_count":0.6650684969195186,"forks_count":2.3326919867133036,"docker_downloads_count":0.37416981073243744,"average":0.5768756943081558},"purl":"pkg:pypi/uvicorn","advisories":[{"uuid":"MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLTMzYzctMm1wdy1oZzM0","url":"https://github.com/advisories/GHSA-33c7-2mpw-hg34","title":"Log injection in uvicorn","description":"This affects all versions of package uvicorn. The request logger provided by the package is vulnerable to ASNI escape sequence injection. Whenever any HTTP request is received, the default behaviour of uvicorn is to log its details to either the console or a log file. When attackers request crafted URLs with percent-encoded escape sequences, the logging component will log the URL after it's been processed with urllib.parse.unquote, therefore converting any percent-encoded characters into their single-character equivalent, which can have special meaning in terminal emulators. By requesting URLs with crafted paths, attackers can: * Pollute uvicorn's access logs, therefore jeopardising the integrity of such files. * Use ANSI sequence codes to attempt to interact with the terminal emulator that's displaying the logs (either in real time or from a file).","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2020-07-29T18:07:16.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":7.5,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","references":["https://nvd.nist.gov/vuln/detail/CVE-2020-7694","https://snyk.io/vuln/SNYK-PYTHON-UVICORN-575560","https://github.com/encode/uvicorn/issues/723","https://github.com/encode/uvicorn/commit/895807f94ea9a8e588605c12076b7d7517cda503","https://github.com/pypa/advisory-database/tree/main/vulns/uvicorn/PYSEC-2020-150.yaml","https://github.com/advisories/GHSA-33c7-2mpw-hg34"],"source_kind":"github","identifiers":["GHSA-33c7-2mpw-hg34","CVE-2020-7694"],"repository_url":"https://github.com/encode/uvicorn","blast_radius":35.27081308425783,"packages":[{"versions":[{"first_patched_version":"0.11.7","vulnerable_version_range":"\u003c 0.11.7"}],"ecosystem":"pypi","package_name":"uvicorn"}],"created_at":"2022-12-21T16:13:23.213Z","updated_at":"2024-11-18T22:32:54.000Z","epss_percentage":0.00227,"epss_percentile":0.42522},{"uuid":"MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLWY5N2gtMnBmeC1mNTlm","url":"https://github.com/advisories/GHSA-f97h-2pfx-f59f","title":"HTTP response splitting in uvicorn","description":"Uvicorn before 0.11.7 is vulnerable to HTTP response splitting. CRLF sequences are not escaped in the value of HTTP headers. Attackers can exploit exploit this to add arbitrary headers to HTTP responses, or even return an arbitrary response body, whenever crafted input is used to construct HTTP headers.","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2020-07-29T18:07:20.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":7.5,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","references":["https://nvd.nist.gov/vuln/detail/CVE-2020-7695","https://snyk.io/vuln/SNYK-PYTHON-UVICORN-570471","https://github.com/pypa/advisory-database/tree/main/vulns/uvicorn/PYSEC-2020-151.yaml","https://github.com/advisories/GHSA-f97h-2pfx-f59f"],"source_kind":"github","identifiers":["GHSA-f97h-2pfx-f59f","CVE-2020-7695"],"repository_url":null,"blast_radius":35.27081308425783,"packages":[{"versions":[{"first_patched_version":"0.11.7","vulnerable_version_range":"\u003c 0.11.7"}],"ecosystem":"pypi","package_name":"uvicorn"}],"created_at":"2022-12-21T16:13:23.204Z","updated_at":"2025-03-22T01:13:05.417Z","epss_percentage":0.003,"epss_percentile":0.50491}],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/uvicorn","docker_dependents_count":4875,"docker_downloads_count":208248983,"usage_url":"https://repos.ecosyste.ms/usage/pypi/uvicorn","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/uvicorn/dependencies","status":null,"funding_links":["https://github.com/sponsors/encode"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/uvicorn/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/uvicorn/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/uvicorn/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/uvicorn/related_packages","maintainers":[{"uuid":"tomchristie","login":"tomchristie","name":null,"email":null,"url":null,"packages_count":53,"html_url":"https://pypi.org/user/tomchristie/","role":null,"created_at":"2023-01-22T23:45:53.517Z","updated_at":"2023-01-22T23:45:53.517Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/tomchristie/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690322,"maintainers_count":292759,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":3002,"unique_repositories_count_past_30_days":260,"recent_issues":[{"uuid":"5911580103","node_id":"PR_kwDOR9i09M8AAAABJLPkvA","number":652,"state":"open","title":"chore(deps): update uvicorn requirement from \u003e=0.27.0 to \u003e=0.54.0 in /agents/super-hyper-broski-agent","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-18T16:21:33.000Z","updated_at":"2026-10-18T16:21:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"uvicorn","old_version":"\u003e=0.27.0","new_version":"\u003e=0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":"/agents/super-hyper-broski-agent","ecosystem":"pip"},"body":"Updates the requirements on [uvicorn](https://github.com/Kludex/uvicorn) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.27.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/652","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/652","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/652/packages"},{"uuid":"5908542052","node_id":"PR_kwDOT1-A488AAAABJI6Grw","number":14,"state":"open","title":"Bump uvicorn from 0.32.0 to 0.54.0 in /packages/prospectus-parser","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-18T10:24:06.000Z","updated_at":"2026-10-18T10:24:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"uvicorn","old_version":"0.32.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":"/packages/prospectus-parser","ecosystem":"pip"},"body":"Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.32.0 to 0.54.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.32.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uvicorn\u0026package-manager=pip\u0026previous-version=0.32.0\u0026new-version=0.54.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/RADENzzz/coe-nnect/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/RADENzzz%2Fcoe-nnect/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"},{"uuid":"5905640464","node_id":"PR_kwDOVDCNZM8AAAABJGsrAQ","number":48,"state":"open","title":"Bump the minor-and-patch group across 1 directory with 23 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-18T03:08:37.000Z","updated_at":"2026-10-18T03:10:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-and-patch","update_count":23,"packages":[{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"google-auth","old_version":"2.58.0","new_version":"2.62.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-genai","old_version":"2.23.0","new_version":"2.31.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"postgrest","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"propcache","old_version":"0.5.2","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-dotenv","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"realtime","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"starlette","old_version":"1.6.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"storage3","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-auth","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-functions","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"yarl","old_version":"1.24.5","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 23 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.1` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.58.0` | `2.62.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.23.0` | `2.31.0` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [postgrest](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.5.2` | `0.5.4` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3` | `1.2.4` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.8.0` |\n| [storage3](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [supabase-auth](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [supabase-functions](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.5` | `1.25.1` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n\n\nUpdates `charset-normalizer` from 3.5.1 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.5.1...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 50.0.1 to 50.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e50.0.2 - 2026-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 4.0.3.\n* Added ``abi3.abi3t`` wheels for free-threaded CPython 3.15 and later.\n* Updated to PyO3 0.29.2, which fixes building ``cryptography`` on Cygwin and\n  MSYS2.\n\u003cp\u003e.. _v50-0-1:\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4dda5c7fe4ae71b8925f2551910a0ef959df9c7a\"\u003e\u003ccode\u003e4dda5c7\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump for 50.0.2 release + changelog (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15733\"\u003e#15733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/70c881cd7ea97d38df09f57c1117470cd1a5a2f7\"\u003e\u003ccode\u003e70c881c\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump pyo3 to 0.29.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15731\"\u003e#15731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/a8c45c449b8d29908a14561afd45fee8bf27d044\"\u003e\u003ccode\u003ea8c45c4\u003c/code\u003e\u003c/a\u003e [50.0.x] Build abi3.abi3t wheels for CPython 3.15+ (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15496\"\u003e#15496\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15732\"\u003e#15732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/50.0.1...50.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16484\"\u003e#16484\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4dda4625bdc19ce5ae946c152298f70d4d4fc5ed\"\u003e\u003ccode\u003e4dda462\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16485\"\u003e#16485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bf18b23bc75ba25dba7310752a97c1612dcd298e\"\u003e\u003ccode\u003ebf18b23\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5e6a1eec1fbc0acbe0a813e981cfd69539051b52\"\u003e\u003ccode\u003e5e6a1ee\u003c/code\u003e\u003c/a\u003e 🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16484\"\u003e#16484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.58.0 to 2.62.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-auth: v2.62.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.61.0...google-auth-v2.62.0\"\u003e2.62.0\u003c/a\u003e (2026-10-12)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e enable bound ID tokens by default on Cloud Run (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18635\"\u003e#18635\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8b625c4927371992f4569962292299eced040047\"\u003e8b625c4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth: v2.61.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.60.0...google-auth-v2.61.0\"\u003e2.61.0\u003c/a\u003e (2026-10-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e support bound access and ID tokens for GKE (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18594\"\u003e#18594\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9f5fd7bdf0707a17c363482b094ccd70a4358389\"\u003e9f5fd7b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth: v2.60.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.59.1...google-auth-v2.60.0\"\u003e2.60.0\u003c/a\u003e (2026-10-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e Support sync credentials in AsyncAuthorizedSession (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18542\"\u003e#18542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/379956865248ebc40e5b851ede520056e65abcac\"\u003e3799568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/5deaacb67a812e7afa0a647ddf744ebdcf59b270\"\u003e\u003ccode\u003e5deaacb\u003c/code\u003e\u003c/a\u003e chore(main): release google-auth 2.62.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18637\"\u003e#18637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8b625c4927371992f4569962292299eced040047\"\u003e\u003ccode\u003e8b625c4\u003c/code\u003e\u003c/a\u003e feat(auth): enable bound ID tokens by default on Cloud Run (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18635\"\u003e#18635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98fc3045ce3e3c5979f7bc7536bc7d0ef8f9a43b\"\u003e\u003ccode\u003e98fc304\u003c/code\u003e\u003c/a\u003e feat(dbapi): wire timeout parameter through Connection to execute_sql (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18484\"\u003e#18484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0cabf7cb08254e3d068c1a4579e9028adf585047\"\u003e\u003ccode\u003e0cabf7c\u003c/code\u003e\u003c/a\u003e test(spanner): increase stale database cleanup cutoff to 3 hours (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18633\"\u003e#18633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ab564738979f07c29ffb5774cdaa47307540ebe0\"\u003e\u003ccode\u003eab56473\u003c/code\u003e\u003c/a\u003e perf(spanner): prune lock and begin event allocations on single-use snapshots...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/78b9da2ed66434099f786b6d785d3855e5457075\"\u003e\u003ccode\u003e78b9da2\u003c/code\u003e\u003c/a\u003e fix(google-cloud-spanner): do not replay DDL statements on transaction retry ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/f18a11eb4308b9a8889166ea3c1246fb8306a906\"\u003e\u003ccode\u003ef18a11e\u003c/code\u003e\u003c/a\u003e feat(db-dtypes): support pandas 3.1 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18590\"\u003e#18590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/590e43da42fea4f08be7b29b3bf63c3c3a33d112\"\u003e\u003ccode\u003e590e43d\u003c/code\u003e\u003c/a\u003e fix(bigquery): accept empty sourceFormat fields (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18472\"\u003e#18472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/05b37756b0c4cb43ae978c928e90b1ff40a07ccd\"\u003e\u003ccode\u003e05b3775\u003c/code\u003e\u003c/a\u003e perf(spanner): optimize single-chunk results and single-row lookups (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18602\"\u003e#18602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a7678fd8c797e20d6f1fe0c8af84e7ded451f923\"\u003e\u003ccode\u003ea7678fd\u003c/code\u003e\u003c/a\u003e fix(spanner): eliminate duplicate metrics capture and measure full streaming ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.58.0...google-auth-v2.62.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-genai` from 2.23.0 to 2.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/releases\"\u003egoogle-genai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.31.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.1...v2.31.0\"\u003e2.31.0\u003c/a\u003e (2026-10-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Add gemini-4-argon to Model enum (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8554b07d0025e19361b7a10a6384cc143f3a8ea9\"\u003e8554b07\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear continuation state and preserve prompt feedback when continuation hop returns no candidates (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a0d809cd838ec02938c1646c47cc3ece2761fc09\"\u003ea0d809c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the function declaration parser for union types. Fixes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3060\"\u003e#3060\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/be32e9e074e6a403621a6d52ae97f81f0777549e\"\u003ebe32e9e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the grounding metadata merging for automatic continuation in generate content and generate content stream (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f1499bb86c707d51b5b2684ff9423653cc74895c\"\u003ef1499bb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake continuation streams retry dropped hops, stop on prompt_feedback, and keep real errors in generate_content (\u003ca href=\"https://github.com/googleapis/python-genai/commit/339a92921ac877d07d34a3646cddefdf9c71565c\"\u003e339a929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch the mTLS endpoint to each transport's SSL context, including plain aiohttp (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f8a469322cf66716ca3345c14516c0daa213ca1c\"\u003ef8a4693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.30.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.0...v2.30.1\"\u003e2.30.1\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConcatenate output_text across multi-step model responses in a turn (\u003ca href=\"https://github.com/googleapis/python-genai/commit/180c3453f91e4734b828534950fa7f8526934b59\"\u003e180c345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.30.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.29.0...v2.30.0\"\u003e2.30.0\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccumulate streaming continuation usage metadata and expose initial_prompt_token_count (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b27f3cde9ebbfe49a00ba2b167f534bc86e46fce\"\u003eb27f3cd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003econtinuation_token\u003c/code\u003e to the Interactions \u003ccode\u003einteraction.status_update\u003c/code\u003e event. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/02db4c595523f5d8545023aa9ede2723985d9343\"\u003e02db4c5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a CONTINUATION_REQUIRED Interaction status (\u003ca href=\"https://github.com/googleapis/python-genai/commit/bf9d6d7ce9ad78a7a5bc9a166c7fbcf2da0623ce\"\u003ebf9d6d7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd billable token counts fields (\u003ca href=\"https://github.com/googleapis/python-genai/commit/6a6501c92392b3780b67a895cb3bdf963c1b2bf4\"\u003e6a6501c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd startOffset/endOffset to Transcription and interimTranscriptTimestampEnabled to RealtimeInputConfig (\u003ca href=\"https://github.com/googleapis/python-genai/commit/c644a948d3279ada98032200f17ba12e04ed0525\"\u003ec644a94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd usage in InteractionStatusUpdate events (\u003ca href=\"https://github.com/googleapis/python-genai/commit/56c3a1a99a8c2bb3ccf914b5f9a1f0a745eb716c\"\u003e56c3a1a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow automatic resumption of continuation token for in generate content and generate content stream. Default behavior for this feature is disabled (\u003ca href=\"https://github.com/googleapis/python-genai/commit/83e43ea082fd101b67a4e61a3c1a12e674881748\"\u003e83e43ea\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e Update Speakeasy generator to v2.948.0, bump CLI to v0.4.2, and apply CLI overlay fixes (\u003ca href=\"https://github.com/googleapis/python-genai/commit/cdcd3dde488b936f68e1b107a40465c1a76658f7\"\u003ecdcd3dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable automatic continuation token resumption for chats module. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9ebf71497338b8cb6edc651d99c91145e36ee7bf\"\u003e9ebf714\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear intermediate CONTINUATION finish_reason in streaming continuation (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8a641d8146941000d8d19df81cfc5d85ee16f370\"\u003e8a641d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not record incomplete continuation stream turns in curated chat history (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b382e01e8e214998c1e28cb26811bfcd0f79c11f\"\u003eb382e01\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egemini-api-cli:\u003c/strong\u003e Remove unsupported 2.5 and 1.6 models from Interactions model options and CLI examples (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe5fb10ec895392dbb1b7f45a76901e7abed9a8b\"\u003efe5fb10\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egenai:\u003c/strong\u003e Deduplicate Flash and Omni descriptions in ModelOption (\u003ca href=\"https://github.com/googleapis/python-genai/commit/33efaad19f9c34c262423731885a6ab9c4760dad\"\u003e33efaad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Restore \u003ccode\u003esuper().model_construct\u003c/code\u003e in \u003ccode\u003eInteraction\u003c/code\u003e model validator (\u003ca href=\"https://github.com/googleapis/python-genai/commit/ccd5dd32b14b119f7d3a3254541add6db493222c\"\u003eccd5dd3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epython:\u003c/strong\u003e Discard stale checkpoint token on non-resumable finish reason (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f44e8eea085027f34b3dcdb58a474b8425da3444\"\u003ef44e8ee\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/blob/main/CHANGELOG.md\"\u003egoogle-genai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.1...v2.31.0\"\u003e2.31.0\u003c/a\u003e (2026-10-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Add gemini-4-argon to Model enum (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8554b07d0025e19361b7a10a6384cc143f3a8ea9\"\u003e8554b07\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear continuation state and preserve prompt feedback when continuation hop returns no candidates (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a0d809cd838ec02938c1646c47cc3ece2761fc09\"\u003ea0d809c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the function declaration parser for union types. Fixes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3060\"\u003e#3060\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/be32e9e074e6a403621a6d52ae97f81f0777549e\"\u003ebe32e9e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the grounding metadata merging for automatic continuation in generate content and generate content stream (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f1499bb86c707d51b5b2684ff9423653cc74895c\"\u003ef1499bb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake continuation streams retry dropped hops, stop on prompt_feedback, and keep real errors in generate_content (\u003ca href=\"https://github.com/googleapis/python-genai/commit/339a92921ac877d07d34a3646cddefdf9c71565c\"\u003e339a929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch the mTLS endpoint to each transport's SSL context, including plain aiohttp (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f8a469322cf66716ca3345c14516c0daa213ca1c\"\u003ef8a4693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.0...v2.30.1\"\u003e2.30.1\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConcatenate output_text across multi-step model responses in a turn (\u003ca href=\"https://github.com/googleapis/python-genai/commit/180c3453f91e4734b828534950fa7f8526934b59\"\u003e180c345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.29.0...v2.30.0\"\u003e2.30.0\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccumulate streaming continuation usage metadata and expose initial_prompt_token_count (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b27f3cde9ebbfe49a00ba2b167f534bc86e46fce\"\u003eb27f3cd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003econtinuation_token\u003c/code\u003e to the Interactions \u003ccode\u003einteraction.status_update\u003c/code\u003e event. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/02db4c595523f5d8545023aa9ede2723985d9343\"\u003e02db4c5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a CONTINUATION_REQUIRED Interaction status (\u003ca href=\"https://github.com/googleapis/python-genai/commit/bf9d6d7ce9ad78a7a5bc9a166c7fbcf2da0623ce\"\u003ebf9d6d7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd billable token counts fields (\u003ca href=\"https://github.com/googleapis/python-genai/commit/6a6501c92392b3780b67a895cb3bdf963c1b2bf4\"\u003e6a6501c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd startOffset/endOffset to Transcription and interimTranscriptTimestampEnabled to RealtimeInputConfig (\u003ca href=\"https://github.com/googleapis/python-genai/commit/c644a948d3279ada98032200f17ba12e04ed0525\"\u003ec644a94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd usage in InteractionStatusUpdate events (\u003ca href=\"https://github.com/googleapis/python-genai/commit/56c3a1a99a8c2bb3ccf914b5f9a1f0a745eb716c\"\u003e56c3a1a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow automatic resumption of continuation token for in generate content and generate content stream. Default behavior for this feature is disabled (\u003ca href=\"https://github.com/googleapis/python-genai/commit/83e43ea082fd101b67a4e61a3c1a12e674881748\"\u003e83e43ea\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e Update Speakeasy generator to v2.948.0, bump CLI to v0.4.2, and apply CLI overlay fixes (\u003ca href=\"https://github.com/googleapis/python-genai/commit/cdcd3dde488b936f68e1b107a40465c1a76658f7\"\u003ecdcd3dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable automatic continuation token resumption for chats module. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9ebf71497338b8cb6edc651d99c91145e36ee7bf\"\u003e9ebf714\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear intermediate CONTINUATION finish_reason in streaming continuation (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8a641d8146941000d8d19df81cfc5d85ee16f370\"\u003e8a641d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not record incomplete continuation stream turns in curated chat history (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b382e01e8e214998c1e28cb26811bfcd0f79c11f\"\u003eb382e01\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egemini-api-cli:\u003c/strong\u003e Remove unsupported 2.5 and 1.6 models from Interactions model options and CLI examples (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe5fb10ec895392dbb1b7f45a76901e7abed9a8b\"\u003efe5fb10\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egenai:\u003c/strong\u003e Deduplicate Flash and Omni descriptions in ModelOption (\u003ca href=\"https://github.com/googleapis/python-genai/commit/33efaad19f9c34c262423731885a6ab9c4760dad\"\u003e33efaad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Restore \u003ccode\u003esuper().model_construct\u003c/code\u003e in \u003ccode\u003eInteraction\u003c/code\u003e model validator (\u003ca href=\"https://github.com/googleapis/python-genai/commit/ccd5dd32b14b119f7d3a3254541add6db493222c\"\u003eccd5dd3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epython:\u003c/strong\u003e Discard stale checkpoint token on non-resumable finish reason (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f44e8eea085027f34b3dcdb58a474b8425da3444\"\u003ef44e8ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise default HTTP timeouts so long-running requests aren't killed client-side (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b006b4bb72b555963181e87a87be2a061d650779\"\u003eb006b4b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResume streaming generation from the latest checkpoint continuation token on mid-stream errors or cutoffs (\u003ca href=\"https://github.com/googleapis/python-genai/commit/90bb32bcd9bca471beb8dcb300401538df3f6f3f\"\u003e90bb32b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate EnvironmentConfig.env schema to map keys to EnvVar or string. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/3108d8c9748eb872ab440de9b3d07264938459ea\"\u003e3108d8c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/6bbead9ec73eee0b2557c4bf07406d3574b01533\"\u003e\u003ccode\u003e6bbead9\u003c/code\u003e\u003c/a\u003e chore(main): release 2.31.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3123\"\u003e#3123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/be32e9e074e6a403621a6d52ae97f81f0777549e\"\u003e\u003ccode\u003ebe32e9e\u003c/code\u003e\u003c/a\u003e fix: fix the function declaration parser for union types. Fixes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3060\"\u003e#3060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/efbe9d720308c80423d24f55da2e9b7f53fdcb17\"\u003e\u003ccode\u003eefbe9d7\u003c/code\u003e\u003c/a\u003e chore: internal change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/339a92921ac877d07d34a3646cddefdf9c71565c\"\u003e\u003ccode\u003e339a929\u003c/code\u003e\u003c/a\u003e fix: make continuation streams retry dropped hops, stop on prompt_feedback, a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/829ec551f1aa82b73a9fc6585b8d46955944dedf\"\u003e\u003ccode\u003e829ec55\u003c/code\u003e\u003c/a\u003e test: retry transient errors for longer in the nightly integration tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/1dbf070287916c2bb2c4352972fd6427a6348ce6\"\u003e\u003ccode\u003e1dbf070\u003c/code\u003e\u003c/a\u003e test: switch the shared integration tests to gemini-3.8-flash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/f1499bb86c707d51b5b2684ff9423653cc74895c\"\u003e\u003ccode\u003ef1499bb\u003c/code\u003e\u003c/a\u003e fix: fix the grounding metadata merging for automatic continuation in generat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/8554b07d0025e19361b7a10a6384cc143f3a8ea9\"\u003e\u003ccode\u003e8554b07\u003c/code\u003e\u003c/a\u003e feat(interactions): add gemini-4-argon to Model enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/a0d809cd838ec02938c1646c47cc3ece2761fc09\"\u003e\u003ccode\u003ea0d809c\u003c/code\u003e\u003c/a\u003e fix: clear continuation state and preserve prompt feedback when continuation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/f8a469322cf66716ca3345c14516c0daa213ca1c\"\u003e\u003ccode\u003ef8a4693\u003c/code\u003e\u003c/a\u003e fix: Match the mTLS endpoint to each transport's SSL context, including plain...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.23.0...v2.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.19 to 3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.20 (2026-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d55e65e1a3b1ede7f556bc202738066f5597e249\"\u003e\u003ccode\u003ed55e65e\u003c/code\u003e\u003c/a\u003e Release 3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0c0824a928e50048e59d4ce55fe760dba30528bc\"\u003e\u003ccode\u003e0c0824a\u003c/code\u003e\u003c/a\u003e Pre-release 3.20rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bd7c316a08761c79ba557b5b9e6a3da24d71fa88\"\u003e\u003ccode\u003ebd7c316\u003c/code\u003e\u003c/a\u003e Note Python 3.15 support in the 3.20 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b6cce8523eae3442aba976f01607b1cdf797c6ff\"\u003e\u003ccode\u003eb6cce85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/276\"\u003e#276\u003c/a\u003e from kjd/unicode-18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/9a4bc59e9d5ab89e7916fc0a50650cb55e3faf26\"\u003e\u003ccode\u003e9a4bc59\u003c/code\u003e\u003c/a\u003e Update to Unicode 18.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/dfab5a06affddcc7781a7bbab1cac1bb7d3b4e05\"\u003e\u003ccode\u003edfab5a0\u003c/code\u003e\u003c/a\u003e Merge branch 'python-3.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/417c35496ccbffad4b0a434ac9b563ee6f8fa0a9\"\u003e\u003ccode\u003e417c354\u003c/code\u003e\u003c/a\u003e Read the latest Unicode version from the DerivedAge.txt header instead of the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cd1739200f3bf07871372bcb31c271de136eaccf\"\u003e\u003ccode\u003ecd17392\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/274\"\u003e#274\u003c/a\u003e from kjd/fix-decode-length-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5796d79d44c76a54f03e8938dd22edaa1221c27\"\u003e\u003ccode\u003ec5796d7\u003c/code\u003e\u003c/a\u003e Skip the decode round-trip check for domains past encode's length limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ee690bf133e874351103b9fe838fdda2a7a09f\"\u003e\u003ccode\u003ed6ee690\u003c/code\u003e\u003c/a\u003e Update to Python 3.15 release candidate in CI and add trove classifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.19...v3.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `postgrest` from 2.31.0 to 2.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/supabase/supabase-py/releases\"\u003epostgrest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/supabase/supabase-py/compare/v2.31.0...v2.32.0\"\u003e2.32.0\u003c/a\u003e (2026-10-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efunctions:\u003c/strong\u003e fix invoke option leakage, add method and bytes body support (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1600\"\u003e#1600\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/9dcbc5fdef03477b4c65c1526b861dec55b7b6c2\"\u003e9dcbc5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport new realtime features (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1524\"\u003e#1524\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/80688d1278634b7190fc9e7f57b3e885ff3f027c\"\u003e80688d1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthInvalidJwtError when get_claims JWT has no exp (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1603\"\u003e#1603\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/899302ec39fca876c9b70e01f1344b801ce8b842\"\u003e899302e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthWeakPasswordError for responses without an error code (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1629\"\u003e#1629\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/1f74409d2f08898988efd534e654c5612d0e214a\"\u003e1f74409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e point SDK compliance workflow at the python reusable workflow (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1540\"\u003e#1540\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/b16b16a175be0bfc57cf7af6acac01ef4078590a\"\u003eb16b16a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e unbreak storage tests (service_role for bucket empty) and stop fail-fast cancelling sibling jobs (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2f9ca4446eb691f6a2ef48c68bb24f4d88448774\"\u003e2f9ca44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient_options:\u003c/strong\u003e honor False for boolean options in replace() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/10fb8f9029d4659f1ea874e7154b3ae19a4a1fa1\"\u003e10fb8f9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect invalid feature IDs in sdk-compliance.yaml (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1578\"\u003e#1578\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2a795a79c20936771c67d65302495bb8dfa9b2f3\"\u003e2a795a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehandle non-standard and non-JSON error responses without AttributeError (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1577\"\u003e#1577\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/5b8080af4d4a3d6b3a9491d331a67e8bc115cd9c\"\u003e5b8080a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e align rpc maybe_single with select (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1555\"\u003e#1555\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/0490201fb7f201808d0dfdf521ec17015f67b308\"\u003e0490201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e coerce non-string values in array filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1530\"\u003e#1530\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3433b0db4993445a459c6ed7e497e3bdcc194258\"\u003e3433b0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e escape array-literal elements in cs/cd/contains/contained_by/overlaps (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1593\"\u003e#1593\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/f140cd6aa900bcf1bb633bcd748598bc82c035a5\"\u003ef140cd6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e normalize boolean values in is_() to lowercase literals (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1535\"\u003e#1535\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/21ccd6325f9e09e068696c62721f29c76a348a92\"\u003e21ccd63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve negation for or filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1619\"\u003e#1619\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/c1dc29158569cbcbacbf10f850e198a514d81d6f\"\u003ec1dc291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve text search negation (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1624\"\u003e#1624\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/62a090215b7f389a574767c38d4ab92fb1a82990\"\u003e62a0902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e retry transient failures for HEAD requests (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/bb7ecc5fb86f5f8729c40a3885c6154d9b9f6262\"\u003ebb7ecc5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e serialize filter values in eq() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1591\"\u003e#1591\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8d90cfaf118933a4823f90f4cc3b36e39b73d0bd\"\u003e8d90cfa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e include join_ref on every client-sent channel event (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1626\"\u003e#1626\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8c1a91408b0ca04e9c780fc21b61cb596083ab72\"\u003e8c1a914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e process every key in a presence diff's leaves (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1631\"\u003e#1631\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8913406b5b8dac9b7e6f8a359f36fe078eeb299a\"\u003e8913406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e cache control header and retry safety (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1556\"\u003e#1556\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e9f11419fca9f97cfcd175cf4bb5bdbfc7e17b5a\"\u003ee9f1141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e make list_v2 method's \u003ccode\u003ekey\u003c/code\u003e optional (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e6fba08f6c20fca4048c0f477af1533d196e1038\"\u003ee6fba08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e send camelCase sort params in analytics list (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/11f6cdf324d53d76fab5607698e05abcd9514711\"\u003e11f6cdf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix code of conduct link in CONTRIBUTING (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1538\"\u003e#1538\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3c9890089c7dab5891feb9fdc7872dca9c5a749b\"\u003e3c98900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/supabase/supabase-py/blob/main/CHANGELOG.md\"\u003epostgrest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/supabase/supabase-py/compare/v2.31.0...v2.32.0\"\u003e2.32.0\u003c/a\u003e (2026-10-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efunctions:\u003c/strong\u003e fix invoke option leakage, add method and bytes body support (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1600\"\u003e#1600\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/9dcbc5fdef03477b4c65c1526b861dec55b7b6c2\"\u003e9dcbc5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport new realtime features (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1524\"\u003e#1524\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/80688d1278634b7190fc9e7f57b3e885ff3f027c\"\u003e80688d1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthInvalidJwtError when get_claims JWT has no exp (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1603\"\u003e#1603\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/899302ec39fca876c9b70e01f1344b801ce8b842\"\u003e899302e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthWeakPasswordError for responses without an error code (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1629\"\u003e#1629\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/1f74409d2f08898988efd534e654c5612d0e214a\"\u003e1f74409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e point SDK compliance workflow at the python reusable workflow (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1540\"\u003e#1540\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/b16b16a175be0bfc57cf7af6acac01ef4078590a\"\u003eb16b16a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e unbreak storage tests (service_role for bucket empty) and stop fail-fast cancelling sibling jobs (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2f9ca4446eb691f6a2ef48c68bb24f4d88448774\"\u003e2f9ca44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient_options:\u003c/strong\u003e honor False for boolean options in replace() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/10fb8f9029d4659f1ea874e7154b3ae19a4a1fa1\"\u003e10fb8f9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect invalid feature IDs in sdk-compliance.yaml (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1578\"\u003e#1578\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2a795a79c20936771c67d65302495bb8dfa9b2f3\"\u003e2a795a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehandle non-standard and non-JSON error responses without AttributeError (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1577\"\u003e#1577\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/5b8080af4d4a3d6b3a9491d331a67e8bc115cd9c\"\u003e5b8080a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e align rpc maybe_single with select (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1555\"\u003e#1555\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/0490201fb7f201808d0dfdf521ec17015f67b308\"\u003e0490201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e coerce non-string values in array filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1530\"\u003e#1530\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3433b0db4993445a459c6ed7e497e3bdcc194258\"\u003e3433b0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e escape array-literal elements in cs/cd/contains/contained_by/overlaps (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1593\"\u003e#1593\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/f140cd6aa900bcf1bb633bcd748598bc82c035a5\"\u003ef140cd6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e normalize boolean values in is_() to lowercase literals (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1535\"\u003e#1535\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/21ccd6325f9e09e068696c62721f29c76a348a92\"\u003e21ccd63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve negation for or filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1619\"\u003e#1619\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/c1dc29158569cbcbacbf10f850e198a514d81d6f\"\u003ec1dc291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve text search negation (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1624\"\u003e#1624\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/62a090215b7f389a574767c38d4ab92fb1a82990\"\u003e62a0902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e retry transient failures for HEAD requests (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/bb7ecc5fb86f5f8729c40a3885c6154d9b9f6262\"\u003ebb7ecc5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e serialize filter values in eq() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1591\"\u003e#1591\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8d90cfaf118933a4823f90f4cc3b36e39b73d0bd\"\u003e8d90cfa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e include join_ref on every client-sent channel event (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1626\"\u003e#1626\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8c1a91408b0ca04e9c780fc21b61cb596083ab72\"\u003e8c1a914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e process every key in a presence diff's leaves (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1631\"\u003e#1631\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8913406b5b8dac9b7e6f8a359f36fe078eeb299a\"\u003e8913406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e cache control header and retry safety (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1556\"\u003e#1556\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e9f11419fca9f97cfcd175cf4bb5bdbfc7e17b5a\"\u003ee9f1141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e make list_v2 method's \u003ccode\u003ekey\u003c/code\u003e optional (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e6fba08f6c20fca4048c0f477af1533d196e1038\"\u003ee6fba08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e send camelCase sort params in analytics list (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/11f6cdf324d53d76fab5607698e05abcd9514711\"\u003e11f6cdf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix code of conduct link in CONTRIBUTING (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1538\"\u003e#1538\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3c9890089c7dab5891feb9fdc7872dca9c5a749b\"\u003e3c98900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/837cf3aa754922380f94d4812bac48cb1ab29ab5\"\u003e\u003ccode\u003e837cf3a\u003c/code\u003e\u003c/a\u003e chore(main): release 2.32.0 (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/279cc639096cecc7da20b29fcaa1f7dfb3326dd1\"\u003e\u003ccode\u003e279cc63\u003c/code\u003e\u003c/a\u003e fix(storage): send camelCase pagination keys in list_indexes (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1633\"\u003e#1633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/11f6cdf324d53d76fab5607698e05abcd9514711\"\u003e\u003ccode\u003e11f6cdf\u003c/code\u003e\u003c/a\u003e fix(storage): send camelCase sort params in analytics list (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1636\"\u003e#1636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/8913406b5b8dac9b7e6f8a359f36fe078eeb299a\"\u003e\u003ccode\u003e8913406\u003c/code\u003e\u003c/a\u003e fix(realtime): process every key in a presence diff's leaves (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1631\"\u003e#1631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/1f74409d2f08898988efd534e654c5612d0e214a\"\u003e\u003ccode\u003e1f74409\u003c/code\u003e\u003c/a\u003e fix(auth): raise AuthWeakPasswordError for responses without an error code (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/c1dc29158569cbcbacbf10f850e198a514d81d6f\"\u003e\u003ccode\u003ec1dc291\u003c/code\u003e\u003c/a\u003e fix(postgrest): preserve negation for or filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1619\"\u003e#1619\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/62a090215b7f389a574767c38d4ab92fb1a82990\"\u003e\u003ccode\u003e62a0902\u003c/code\u003e\u003c/a\u003e fix(postgrest): preserve text search negation (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/e6fba08f6c20fca4048c0f477af1533d196e1038\"\u003e\u003ccode\u003ee6fba08\u003c/code\u003e\u003c/a\u003e fix(storage): make list_v2 method's \u003ccode\u003ekey\u003c/code\u003e optional (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/f140cd6aa900bcf1bb633bcd748598bc82c035a5\"\u003e\u003ccode\u003ef140cd6\u003c/code\u003e\u003c/a\u003e fix(postgrest): escape array-literal elements in cs/cd/contains/contained_by/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/8d90cfaf118933a4823f90f4cc3b36e39b73d0bd\"\u003e\u003ccode\u003e8d90cfa\u003c/code\u003e\u003c/a\u003e fix(postgrest): serialize filter values in eq() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1591\"\u003e#1591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/supabase/supabase-py/compare/v2.31.0...v2.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `propcache` from 0.5.2 to 0.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/propcache/releases\"\u003epropcache's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.5.4\u003c/h2\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the release wheels being compiled without optimization since\nversion 0.5.0. The build backend set \u003ccode\u003eCFLAGS\u003c/code\u003e to add\n\u003ccode\u003e-ffile-prefix-map\u003c/code\u003e, which replaced the interpreter's own compiler\nflags instead of extending them, so \u003ccode\u003e-O3\u003c/code\u003e and \u003ccode\u003e-DNDEBUG\u003c/code\u003e were\ndropped; the extra flags now go through \u003ccode\u003eCPPFLAGS\u003c/code\u003e, which is\nappended. Cached property reads are about 1.5x faster than in 0.5.3\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/244\"\u003e#244\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/302\"\u003e#302\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e0.5.3\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a possible crash in the C implementation of \u003ccode\u003ecached_property\u003c/code\u003e\nand \u003ccode\u003eunder_cached_property\u003c/code\u003e on free-threaded Python, where a cached\nvalue could be freed by another thread while it was being read; errors\nraised while looking up the cache are now propagated on all builds,\nand the computed value is no longer leaked if storing it fails\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/297\"\u003e#297\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for free-threaded Python 3.13 -- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/223\"\u003e#223\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated discussion links from the defunct Google Groups forum to\nGitHub Discussions\n-- by :user:\u003ccode\u003egundalow\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/propcache/blob/master/CHANGES.rst\"\u003epropcache's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.5.4\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003e(2026-09-15)\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the release wheels being compiled without optimization since\nversion 0.5.0. The build backend set \u003ccode\u003eCFLAGS\u003c/code\u003e to add\n\u003ccode\u003e-ffile-prefix-map\u003c/code\u003e, which replaced the interpreter's own compiler\nflags instead of extending them, so \u003ccode\u003e-O3\u003c/code\u003e and \u003ccode\u003e-DNDEBUG\u003c/code\u003e were\ndropped; the extra flags now go through \u003ccode\u003eCPPFLAGS\u003c/code\u003e, which is\nappended. Cached property reads are about 1.5x faster than in 0.5.3\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n:issue:\u003ccode\u003e244\u003c/code\u003e, :issue:\u003ccode\u003e302\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch1\u003e0.5.3\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003e(2026-09-15)\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a possible crash in the C implementation of \u003ccode\u003ecached_property\u003c/code\u003e\nand \u003ccode\u003eunder_cached_property\u003c/code\u003e on free-threaded Python, where a cached\nvalue could be freed by another thread while it was being read; errors\nraised while looking up the cache are now propagated on all builds,\nand the computed value is no longer leaked if storing it fails\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n:issue:\u003ccode\u003e297\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for free-threaded Python 3.13 -- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/cc9882f95c6aadbfe7b88898e3f0230e4a38341a\"\u003e\u003ccode\u003ecc9882f\u003c/code\u003e\u003c/a\u003e Release 0.5.4 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/303\"\u003e#303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/4ea72db6be74ca0e1ad9028cbc7d8cf14ae76e89\"\u003e\u003ccode\u003e4ea72db\u003c/code\u003e\u003c/a\u003e Pass extra build flags through CPPFLAGS so wheels keep -O3 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/98b92bcd62f42d2b32712bb013a72b6c4cb38ed7\"\u003e\u003ccode\u003e98b92bc\u003c/code\u003e\u003c/a\u003e Bump version to 0.5.4.dev0 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/d7b6afaf88549f0b7efb1c4a9335ad3b2dc0dd8e\"\u003e\u003ccode\u003ed7b6afa\u003c/code\u003e\u003c/a\u003e Release 0.5.3 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/36b96a5775c0c6d9a35e653e5d685e7777f0e368\"\u003e\u003ccode\u003e36b96a5\u003c/code\u003e\u003c/a\u003e Skip in-build wheel tests off-tag (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/e514a4fb48419a8b3df21fae89fcfa808b7a5725\"\u003e\u003ccode\u003ee514a4f\u003c/code\u003e\u003c/a\u003e Drop the deprecated license classifier (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/3447e83dbe689384d7e8a717313c513d5bcfb974\"\u003e\u003ccode\u003e3447e83\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eunder_cached_property\u003c/code\u003e and \u003ccode\u003ecached_property\u003c/code\u003e safe for free-threading (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/19f4e0e65b281f4eefce67940a7c6bf9ab918212\"\u003e\u003ccode\u003e19f4e0e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/fe44b455407bbb8ca9521689635c7b6ae0d30d0e\"\u003e\u003ccode\u003efe44b45\u003c/code\u003e\u003c/a\u003e Discussion should be in GH Org (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/c48781a36e4480835ce67866e26db8881991f8dd\"\u003e\u003ccode\u003ec48781a\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 10.0.1 to 10.1.0 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/propcache/compare/v0.5.2...v0.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 3.0 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v3.11\u003c/h2\u003e\n\u003cp\u003eEnhanced C11 support\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v3.01...release_v3.11\"\u003ehttps://github.com/eliben/pycparser/compare/release_v3.01...release_v3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003erelease_v3.01\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop an unneeded direct build depndency on wheel by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/597\"\u003eeliben/pycparser#597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle integer suffix in #line directive without crashing by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/601\"\u003eeliben/pycparser#601\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default branch to main by \u003ca href=\"https://github.com/myd7349\"\u003e\u003ccode\u003e@​myd7349\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/602\"\u003eeliben/pycparser#602\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: raise ParseError instead of AssertionError on unmatched '}' by \u003ca href=\"https://github.com/patchwright\"\u003e\u003ccode\u003e@​patchwright\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/604\"\u003eeliben/pycparser#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15 by \u003ca href=\"https://github.com/kytta\"\u003e\u003ccode\u003e@​kytta\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/605\"\u003eeliben/pycparser#605\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty compound literal (type){} raising ParseError by \u003ca href=\"https://github.com/IMGillusion\"\u003e\u003ccode\u003e@​IMGillusion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/606\"\u003eeliben/pycparser#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix compound literal statements in C generator by \u003ca href=\"https://github.com/Rayan-and-beyond\"\u003e\u003ccode\u003e@​Rayan-and-beyond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/607\"\u003eeliben/pycparser#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep the contents of adjacent u8 string literals by \u003ca href=\"https://github.com/SashaMIT\"\u003e\u003ccode\u003e@​SashaMIT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/609\"\u003eeliben/pycparser#609\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v3.00...release_v3.01\"\u003ehttps://github.com/eliben/pycparser/compare/release_v3.00...release_v3.01\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/ccb34399dedf518baac209592518757f367430fe\"\u003e\u003ccode\u003eccb3439\u003c/code\u003e\u003c/a\u003e Prepare for release 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/1d31981b1f91008a7e7ee7b7143f4654d0847f51\"\u003e\u003ccode\u003e1d31981\u003c/code\u003e\u003c/a\u003e Fix concatenation escapes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/dbcd5fddfb92e639a7c9e3b1b4eeebe503ccd2cc\"\u003e\u003ccode\u003edbcd5fd\u003c/code\u003e\u003c/a\u003e Add missing fake types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/8bc38aa15f76cf6165afb139e7f5711fdae4aa88\"\u003e\u003ccode\u003e8bc38aa\u003c/code\u003e\u003c/a\u003e Fix dropped specifiers in lists\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/17da57c031afeba6a3cd3a52f067a1d476b59641\"\u003e\u003ccode\u003e17da57c\u003c/code\u003e\u003c/a\u003e Fix generation of _Alignas and _Atomic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/61f979c4cea46a333a5fcce4aef8cb33aab95229\"\u003e\u003ccode\u003e61f979c\u003c/code\u003e\u003c/a\u003e Add C11's fake headers and some tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/dfbe88b193e103165dd009b0c0cdf348bd7b35de\"\u003e\u003ccode\u003edfbe88b\u003c/code\u003e\u003c/a\u003e Fix unicode escapes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/74588ec8ce0116ff310cfa77218cdc31a2ea32ef\"\u003e\u003ccode\u003e74588ec\u003c/code\u003e\u003c/a\u003e Unify string literal parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7adecd56efcffa3d086dedf274ce5a2a9d4eff55\"\u003e\u003ccode\u003e7adecd5\u003c/code\u003e\u003c/a\u003e Fix implementation of _Static_assert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/b7f48c8feedf903588e0d49f18574cd194be827e\"\u003e\u003ccode\u003eb7f48c8\u003c/code\u003e\u003c/a\u003e C generation for _Generic\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v3.00...release_v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce ...\n\n_Description has been truncated_","html_url":"https://github.com/Ashmitshandilya/bubbles/pull/48","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashmitshandilya%2Fbubbles/issues/48","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/48/packages"},{"uuid":"5900529028","node_id":"PR_kwDOR9i09M8AAAABJCwuGQ","number":621,"state":"open","title":"chore(deps): bump the patch-and-minor group across 1 directory with 185 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-17T16:23:59.000Z","updated_at":"2026-10-17T16:24:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-and-minor","update_count":185,"packages":[{"name":"fastapi","old_version":"0.135.3","new_version":"0.143.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.11.10","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.15.0","new_version":"2.16.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.2.1","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"pyjwt","old_version":"2.12.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"authlib","old_version":"1.6.11","new_version":"1.9.1","repository_url":"https://github.com/authlib/authlib"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-distro","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-celery","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langgraph","old_version":"1.2.13","new_version":"1.2.15","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.0.1","new_version":"4.3.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.13","new_version":"0.4.7","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langchain-community","old_version":"0.3.5","new_version":"0.4.2","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"langserve","old_version":"0.2.1","new_version":"0.3.3","repository_url":"https://github.com/langchain-ai/langserve"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"billiard","old_version":"4.2.4","new_version":"4.3.1","repository_url":"https://github.com/celery/billiard"},{"name":"chromadb","old_version":"1.0.15","new_version":"1.5.9","repository_url":"https://github.com/chroma-core/chroma"},{"name":"eth-account","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/ApeWorX/eth-account"},{"name":"eth-keys","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/ApeWorX/eth-keys"},{"name":"aiohttp","old_version":"3.13.4","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"python-socketio","old_version":"5.15.0","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"python-engineio","old_version":"4.12.2","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"discord-py","old_version":"2.5.2","new_version":"2.7.1","repository_url":"https://github.com/Rapptz/discord.py"},{"name":"py-cord","old_version":"2.6.1","new_version":"2.8.1","repository_url":"https://github.com/Pycord-Development/pycord"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"click","old_version":"8.2.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"typer","old_version":"0.16.0","new_version":"0.27.3","repository_url":"https://github.com/fastapi/typer"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"colorlog","old_version":"6.9.0","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.15.0"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"feedparser","old_version":"6.0.11","new_version":"6.0.14","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"numpy","old_version":"2.3.2","new_version":"2.5.4","repository_url":"https://github.com/numpy/numpy"},{"name":"matplotlib","old_version":"3.10.5","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"scipy","old_version":"1.16.1","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.7.1","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"strawberry-graphql","old_version":"0.312.3","new_version":"0.335.0","repository_url":"https://github.com/sponsors/strawberry-graphql"},{"name":"graphql-core","old_version":"3.2.8","new_version":"3.3.0","repository_url":"https://github.com/graphql-python/graphql-core"},{"name":"qiskit","old_version":"2.3.1","new_version":"2.5.2","repository_url":"https://github.com/Qiskit/qiskit"},{"name":"networkx","old_version":"3.5","new_version":"3.7","repository_url":"https://github.com/networkx/networkx"},{"name":"onnxruntime","old_version":"1.22.1","new_version":"1.31.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"pytest","old_version":"9.0.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-benchmark","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.169.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"black","old_version":"26.3.1","new_version":"26.10.1","repository_url":"https://github.com/psf/black"},{"name":"ruff","old_version":"0.9.0","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"pylint","old_version":"4.0.5","new_version":"4.1.3","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"semgrep","old_version":"1.92.0","new_version":"1.180.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"autogen","old_version":"0.5.0","new_version":"0.14.1","repository_url":"https://github.com/ag2ai/ag2classic"},{"name":"fakeredis","old_version":"2.33.0","new_version":"2.40.0","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"safety","old_version":"3.2.0","new_version":"3.8.1","repository_url":"https://github.com/pyupio/safety"},{"name":"accelerate","old_version":"1.10.0","new_version":"1.15.0","repository_url":"https://github.com/huggingface/accelerate"},{"name":"bitsandbytes","old_version":"0.46.1","new_version":"0.50.2","repository_url":"https://github.com/bitsandbytes-foundation/bitsandbytes"},{"name":"langchain-text-splitters","old_version":"1.1.1","new_version":"1.1.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.7.16","new_version":"0.14.8","repository_url":"https://github.com/langchain-ai/langsmith-python"},{"name":"nltk","old_version":"3.9.1","new_version":"3.10.3","repository_url":"https://github.com/nltk/nltk"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.65.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tokenizers","old_version":"0.21.4","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.8.0","new_version":"2.14.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"amqp","old_version":"5.3.1","new_version":"5.4.1","repository_url":"https://github.com/celery/py-amqp"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arq","old_version":"0.27.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.4","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"boto3","old_version":"1.42.64","new_version":"1.43.113","repository_url":"https://github.com/boto/boto3"},{"name":"build","old_version":"1.3.0","new_version":"1.6.1","repository_url":"https://github.com/pypa/build"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click-repl","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/click-contrib/click-repl"},{"name":"contourpy","old_version":"1.3.3","new_version":"1.4.0","repository_url":"https://github.com/contourpy/contourpy"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dnspython","old_version":"2.8.0","new_version":"2.9.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"fabric","old_version":"3.2.2","new_version":"3.2.3","repository_url":"https://github.com/fabric/fabric"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.7.0"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.67.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"fsspec","old_version":"2026.6.0","new_version":"2026.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geographiclib","old_version":"2.0","new_version":"2.1","repository_url":"https://github.com/geographiclib/geographiclib-python"},{"name":"google-auth","old_version":"2.40.3","new_version":"2.62.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.5","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.74.0","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.4.2","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httptools","old_version":"0.6.4","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jiter","old_version":"0.10.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.1","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpatch","old_version":"1.33","new_version":"1.35","repository_url":"https://github.com/stefankoegl/python-json-patch"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.2.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.25.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.3.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.3","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"narwhals","old_version":"2.0.1","new_version":"2.27.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"nodeenv","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"orjson","old_version":"3.11.7","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pathspec","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"ping3","old_version":"5.1.5","new_version":"5.1.6","repository_url":"https://github.com/kyan001/ping3"},{"name":"pip-api","old_version":"0.0.34","new_version":"0.0.35","repository_url":"https://github.com/di/pip-api"},{"name":"pip-tools","old_version":"7.5.3","new_version":"7.6.2","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"platformdirs","old_version":"4.9.4","new_version":"4.13.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.3.2","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pybase64","old_version":"1.4.2","new_version":"1.5.1","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pycodestyle","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypika","old_version":"0.48.9","new_version":"0.51.1","repository_url":"https://github.com/kayak/pypika"},{"name":"pyproject-hooks","old_version":"1.2.0","new_version":"1.3.3","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"ruamel-yaml","old_version":"0.18.14","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"rustworkx","old_version":"0.17.1","new_version":"0.18.1","repository_url":"https://github.com/Qiskit/rustworkx"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"safehttpx","old_version":"0.1.6","new_version":"0.2.0","repository_url":"https://github.com/gradio-app/safehttpx"},{"name":"smmap","old_version":"5.0.2","new_version":"5.0.3","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"starlette","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"stevedore","old_version":"5.4.1","new_version":"5.9.1"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tornado","old_version":"6.5.9","new_version":"6.5.10","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20261006","repository_url":"https://github.com/python/typeshed"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.4","repository_url":"https://github.com/regebro/tzlocal"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.9.2","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wheel","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"yarl","old_version":"1.20.1","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"truststore","old_version":"0.10.4","new_version":"0.10.5","repository_url":"https://github.com/sethmlarson/truststore"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-and-minor group with 185 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.143.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.54.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.10` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.15.0` | `2.16.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.1.4` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.32.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.13` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.2.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.0` | `2.15.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.11` | `1.9.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.26.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-celery](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.66b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.13` | `1.2.15` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.0.1` | `4.3.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.13` | `0.4.7` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.5` | `0.4.2` |\n| [langserve](https://github.com/langchain-ai/langserve) | `0.2.1` | `0.3.3` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.4` | `4.3.1` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.15` | `1.5.9` |\n| [eth-account](https://github.com/ApeWorX/eth-account) | `0.13.0` | `0.14.0` |\n| [eth-keys](https://github.com/ApeWorX/eth-keys) | `0.7.1` | `0.8.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.4` | `3.14.5` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.15.0` | `5.17.0` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.2` | `4.14.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.32` |\n| [discord-py](https://github.com/Rapptz/discord.py) | `2.5.2` | `2.7.1` |\n| [py-cord](https://github.com/Pycord-Development/pycord) | `2.6.1` | `2.8.1` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.5.0` |\n| [typer](https://github.com/fastapi/typer) | `0.16.0` | `0.27.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.4` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.9.0` | `6.12.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.11` | `6.0.14` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.2` | `2.5.4` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.5` | `3.11.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.16.1` | `1.18.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.1` | `1.9.1` |\n| [strawberry-graphql](https://github.com/sponsors/strawberry-graphql) | `0.312.3` | `0.335.0` |\n| [graphql-core](https://github.com/graphql-python/graphql-core) | `3.2.8` | `3.3.0` |\n| [qiskit](https://github.com/Qiskit/qiskit) | `2.3.1` | `2.5.2` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.7` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.22.1` | `1.31.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.5` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.6` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.1.1` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.1.0` | `5.3.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.169.1` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.10.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.0` | `0.17.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.5` | `4.1.3` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.92.0` | `1.180.0` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [autogen](https://github.com/ag2ai/ag2classic) | `0.5.0` | `0.14.1` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.33.0` | `2.40.0` |\n| [safety](https://github.com/pyupio/safety) | `3.2.0` | `3.8.1` |\n| [accelerate](https://github.com/huggingface/accelerate) | `1.10.0` | `1.15.0` |\n| [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes) | `0.46.1` | `0.50.2` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.1` | `1.1.3` |\n| [langsmith](https://github.com/langchain-ai/langsmith-python) | `0.7.16` | `0.14.8` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.10.3` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.8.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.65.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.4` | `0.23.3` |\n| [torch](https://github.com/pytorch/pytorch) | `2.8.0` | `2.14.1` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [amqp](https://github.com/celery/py-amqp) | `5.3.1` | `5.4.1` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [arq](https://github.com/python-arq/arq) | `0.27.0` | `0.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.4` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [boto3](https://github.com/boto/boto3) | `1.42.64` | `1.43.113` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.6.1` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.5.2` |\n| [click-repl](https://github.com/click-contrib/click-repl) | `0.3.0` | `0.4.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.3` | `1.4.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.2` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.8.0` | `2.9.0` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [fabric](https://github.com/fabric/fabric) | `3.2.2` | `3.2.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.5` |\n| [flask-socketio](https://code.miguelgrinberg.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.7.0` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.67.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.6.0` | `2026.9.0` |\n| [geographiclib](https://github.com/geographiclib/geographiclib-python) | `2.0` | `2.1` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.40.3` | `2.62.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.5` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.6` |\n| [grpcio](https://github.com/grpc/grpc) | `1.74.0` | `1.84.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.4.2` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.9.0` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.10.0` | `0.17.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.6.0` |\n| [jsonpatch](https://github.com/stefankoegl/python-json-patch) | `1.33` | `1.35` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.2.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.5.1` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.3` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.4` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.3.1` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.3` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.0.1` | `2.27.1` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.10.0` | `1.11.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.13.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.1.0` | `1.1.1` |\n| [ping3](https://github.com/kyan001/ping3) | `5.1.5` | `5.1.6` |\n| [pip-api](https://github.com/di/pip-api) | `0.0.34` | `0.0.35` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.3` | `7.6.2` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.4` | `4.13.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.5.4` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.2` | `1.5.1` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.14.0` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.10.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.3` |\n| [pypika](https://github.com/kayak/pypika) | `0.48.9` | `0.51.1` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.2.0` | `1.3.3` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| ruamel-yaml | `0.18.14` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [rustworkx](https://github.com/Qiskit/rustworkx) | `0.17.1` | `0.18.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.19.2` |\n| [safehttpx](https://github.com/gradio-app/safehttpx) | `0.1.6` | `0.2.0` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [starlette](https://github.com/Kludex/starlette) | `1.7.0` | `1.8.0` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.4.1` | `5.9.1` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.13.3` | `0.15.1` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.9` | `6.5.10` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20261006` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.16.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.9.2` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.2` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.2` | `0.48.0` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.20.1` | `1.25.1` |\n| [truststore](https://github.com/sethmlarson/truststore) | `0.10.4` | `0.10.5` |\n\n\nUpdates `fastapi` from 0.135.3 to 0.143.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16484\"\u003e#16484\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4dda4625bdc19ce5ae946c152298f70d4d4fc5ed\"\u003e\u003ccode\u003e4dda462\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16485\"\u003e#16485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bf18b23bc75ba25dba7310752a97c1612dcd298e\"\u003e\u003ccode\u003ebf18b23\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5e6a1eec1fbc0acbe0a813e981cfd69539051b52\"\u003e\u003ccode\u003e5e6a1ee\u003c/code\u003e\u003c/a\u003e 🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16484\"\u003e#16484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.3...0.143.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.35.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.35.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.10 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.10...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.15.0 to 2.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.16.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003eBreaking changes and behavior changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.10 is no longer supported\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1003\"\u003e#1003\u003c/a\u003e). pydantic-settings now requires Python 3.11+, since 3.10 reaches end of life this month. The \u003ccode\u003etomli\u003c/code\u003e fallback is gone in favor of stdlib \u003ccode\u003etomllib\u003c/code\u003e; the \u003ccode\u003etoml\u003c/code\u003e extra is kept as an empty extra so \u003ccode\u003epip install pydantic-settings[toml]\u003c/code\u003e keeps working.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003epython-dotenv\u0026gt;=1.2.2\u003c/code\u003e is now required\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/971\"\u003e#971\u003c/a\u003e) to pick up the fix for CVE-2026-28684.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAliases are ignored in every source when \u003ccode\u003evalidate_by_alias=False\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1033\"\u003e#1033\u003c/a\u003e). Env vars, secrets, CLI flags and defaults now use only field names, matching pydantic. An env var named after the alias is now ignored instead of raising \u003ccode\u003eextra_forbidden\u003c/code\u003e, and the CLI exposes \u003ccode\u003e--apple\u003c/code\u003e rather than \u003ccode\u003e--pomo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003evalidation_alias\u003c/code\u003e takes precedence over \u003ccode\u003ealias\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1038\"\u003e#1038\u003c/a\u003e). When the two differ, values from JSON/YAML/TOML files and the CLI were silently ignored; they now load. CLI help lists the \u003ccode\u003evalidation_alias\u003c/code\u003e flag first, and \u003ccode\u003eCliApp.serialize\u003c/code\u003e emits it.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCLI case-insensitivity only lowercases registered options\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1036\"\u003e#1036\u003c/a\u003e). With \u003ccode\u003ecase_sensitive=False\u003c/code\u003e, args after \u003ccode\u003e--\u003c/code\u003e and those captured by \u003ccode\u003eCliUnknownArgs\u003c/code\u003e keep their case (\u003ccode\u003e-Xmx4G\u003c/code\u003e no longer becomes \u003ccode\u003e-xmx4g\u003c/code\u003e). Unrecognized options are now reported as typed (\u003ccode\u003e--NOPE\u003c/code\u003e instead of \u003ccode\u003e--nope\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eJSON and YAML config files are read as UTF-8 by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/955\"\u003e#955\u003c/a\u003e) instead of the locale encoding, completing the secrets-file fix from 2.15.0. \u003ccode\u003ejson_file_encoding\u003c/code\u003e/\u003ccode\u003eyaml_file_encoding\u003c/code\u003e still override it.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDiscriminated union defaults are partially updated again\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/997\"\u003e#997\u003c/a\u003e). This reverts the 2.15.0 regression with \u003ccode\u003enested_model_default_partial_update=True\u003c/code\u003e: the default is only dropped when the incoming value selects a \u003cem\u003edifferent\u003c/em\u003e union member.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.15 and pydantic 2.14 support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1026\"\u003e#1026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1029\"\u003e#1029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1022\"\u003e#1022\u003c/a\u003e). pydantic 2.14 broke \u003ccode\u003eCliApp.run\u003c/code\u003e and \u003ccode\u003evalidate_by_alias=False\u003c/code\u003e handling; both are fixed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCached settings instances\u003c/strong\u003e via \u003ccode\u003eSettings.settings_cached()\u003c/code\u003e and \u003ccode\u003eSettings.settings_clear_cache()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/952\"\u003e#952\u003c/a\u003e). These give you a process-local singleton per settings class without hand-rolling \u003ccode\u003elru_cache\u003c/code\u003e wrappers. Calling the class directly still builds a fresh instance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAWS Systems Manager Parameter Store source\u003c/strong\u003e — \u003ccode\u003eAWSSystemsManagerSettingsSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/941\"\u003e#941\u003c/a\u003e). It recursively reads every parameter under an \u003ccode\u003essm_path\u003c/code\u003e, with \u003ccode\u003e/\u003c/code\u003e mapping onto nested models. Install it with the new \u003ccode\u003eaws-systems-manager\u003c/code\u003e extra.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eenv_file_depth\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/940\"\u003e#940\u003c/a\u003e) lets a relative \u003ccode\u003eenv_file\u003c/code\u003e be found in parent directories, mirroring \u003ccode\u003epyproject_toml_depth\u003c/code\u003e. This is useful when scripts run from a subdirectory of a monorepo. It defaults to \u003ccode\u003e0\u003c/code\u003e, which keeps the current behavior.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eCliVariadicArg\u003c/code\u003e for named variadic options\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/949\"\u003e#949\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/958\"\u003e#958\u003c/a\u003e). It accepts \u003ccode\u003e--param a b c\u003c/code\u003e in addition to repeated \u003ccode\u003e--param a --param b\u003c/code\u003e. Required fields need at least one value.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eCLI\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCliApp.serialize\u003c/code\u003e output now round-trips through \u003ccode\u003eCliApp.run\u003c/code\u003e for enums, tuples, dates and \u003ccode\u003eDecimal\u003c/code\u003es (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/988\"\u003e#988\u003c/a\u003e), explicit \u003ccode\u003eNone\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/981\"\u003e#981\u003c/a\u003e), empty containers (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1008\"\u003e#1008\u003c/a\u003e), \u003ccode\u003eCliVariadicArg\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/976\"\u003e#976\u003c/a\u003e) and populated \u003ccode\u003eCliUnknownArgs\u003c/code\u003e fields, which previously raised \u003ccode\u003eIndexError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/992\"\u003e#992\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEmpty JSON arrays (\u003ccode\u003e--items []\u003c/code\u003e) now give an empty list instead of \u003ccode\u003e['']\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/994\"\u003e#994\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTuples, \u003ccode\u003efrozenset\u003c/code\u003e, \u003ccode\u003eMutableSequence\u003c/code\u003e and other collection subtypes are now treated as repeatable/variadic options (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/972\"\u003e#972\u003c/a\u003e), and so are named collection type aliases such as \u003ccode\u003eTypeAliasType('Addrs', list[IPvAnyAddress])\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1032\"\u003e#1032\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecli_exit_on_error=False\u003c/code\u003e is now honored in \u003ccode\u003eCliSubCommand\u003c/code\u003e parsers, which raise \u003ccode\u003eSettingsError\u003c/code\u003e instead of exiting (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/977\"\u003e#977\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliSubCommand\u003c/code\u003e aliases keep their case with \u003ccode\u003ecase_sensitive=False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/989\"\u003e#989\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEach \u003ccode\u003eCliUnknownArgs\u003c/code\u003e field now receives only its own subcommand's leftover args (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1004\"\u003e#1004\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliApp.format_help\u003c/code\u003e no longer crashes when \u003ccode\u003ecli_prefix\u003c/code\u003e is set in \u003ccode\u003emodel_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/945\"\u003e#945\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eType aliases and parsing\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNamed union type aliases (\u003ccode\u003eTypeAliasType('V', list[int] | str)\u003c/code\u003e) now decode like their inline equivalents in env and dotenv sources, including under \u003ccode\u003eOptional\u003c/code\u003e, \u003ccode\u003eAnnotated\u003c/code\u003e and custom validation aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1006\"\u003e#1006\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1030\"\u003e#1030\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1041\"\u003e#1041\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eResolving a named \u003ccode\u003eAnnotated\u003c/code\u003e type alias no longer mutates shared \u003ccode\u003eFieldInfo\u003c/code\u003e metadata, which made validators run twice on subclasses or after \u003ccode\u003emodel_rebuild()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/979\"\u003e#979\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA bare single-segment \u003ccode\u003eAliasPath('SOME_KEY')\u003c/code\u003e no longer tries to JSON-decode plain string values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/980\"\u003e#980\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecollections.abc.Set\u003c/code\u003e/\u003ccode\u003eMutableSet\u003c/code\u003e/\u003ccode\u003etyping.AbstractSet\u003c/code\u003e fields now JSON-decode env values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/973\"\u003e#973\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA bare \u003ccode\u003etyping.Dict\u003c/code\u003e field with \u003ccode\u003eenv_nested_delimiter\u003c/code\u003e no longer raises \u003ccode\u003eIndexError\u003c/code\u003e, which was a regression in 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1009\"\u003e#1009\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eCase-insensitive matching now works for nested pydantic dataclasses (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1010\"\u003e#1010\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDotenv, secrets and config files\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWith \u003ccode\u003eextra='allow'\u003c/code\u003e, a non-lowercase \u003ccode\u003eenv_prefix\u003c/code\u003e is now stripped from dotenv extras (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/959\"\u003e#959\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/968\"\u003e#968\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esecrets_case_sensitive=True\u003c/code\u003e is now honored on Windows (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1001\"\u003e#1001\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn empty JSON config file is treated as an empty mapping instead of crashing (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/947\"\u003e#947\u003c/a\u003e), matching YAML and TOML.\u003c/li\u003e\n\u003cli\u003eTOML table headers: \u003ccode\u003e~\u003c/code\u003e paths are now expanded when checking that the file exists (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1034\"\u003e#1034\u003c/a\u003e), and an explicit \u003ccode\u003etoml_table_header=()\u003c/code\u003e now overrides the model config to read the file root (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1027\"\u003e#1027\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCloud sources\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAzure Key Vault and GCP Secret Manager now honor \u003ccode\u003eenv_parse_none_str\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1019\"\u003e#1019\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1040\"\u003e#1040\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAzure Key Vault: \u003ccode\u003edash_to_underscore=True\u003c/code\u003e now works for nested model fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1025\"\u003e#1025\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e now validates its specific constructor arguments (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/975\"\u003e#975\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8c259f41b49b4cefbe4fb676d3c1f52dddd3cca8\"\u003e\u003ccode\u003e8c259f4\u003c/code\u003e\u003c/a\u003e Prepare release 2.16.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4bc667ada383aca4df00304cd171f327a9fae163\"\u003e\u003ccode\u003e4bc667a\u003c/code\u003e\u003c/a\u003e Keep case of non-option CLI args when case_sensitive=False (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f75a8057a5fafe4aef3a042c2adf367c6987f73f\"\u003e\u003ccode\u003ef75a805\u003c/code\u003e\u003c/a\u003e Simplify alias resolution branch and test alias with AliasChoices/AliasPath (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/cfdc5585e821e84905905027de68a0188213537a\"\u003e\u003ccode\u003ecfdc558\u003c/code\u003e\u003c/a\u003e Honor env_parse_none_str for GCP Secret Manager (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/081d39f9c73f46e68bc2bef75a23f7d84ed0c377\"\u003e\u003ccode\u003e081d39f\u003c/code\u003e\u003c/a\u003e Fix config file and CLI values being ignored when alias differs from validati...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/c46ebc4cc599c09f3692f4d2e82a8f0bb5433f3a\"\u003e\u003ccode\u003ec46ebc4\u003c/code\u003e\u003c/a\u003e Expand home paths when checking TOML table headers (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/6ea85e68532ed4365d7e43509369f41b5820ac74\"\u003e\u003ccode\u003e6ea85e6\u003c/code\u003e\u003c/a\u003e Decode optional Annotated named union aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ca9d7c4d7440ca35edff91a0e947f96e6381d890\"\u003e\u003ccode\u003eca9d7c4\u003c/code\u003e\u003c/a\u003e Fix JSON decoding for optional named union aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b6ddda2c8db5d8b0c13af7bafab8502ed7ea072c\"\u003e\u003ccode\u003eb6ddda2\u003c/code\u003e\u003c/a\u003e Fix CLI parsing for named collection type aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1032\"\u003e#1032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/bedb60e2cc253be2ae11003a51108c535a58757c\"\u003e\u003ccode\u003ebedb60e\u003c/code\u003e\u003c/a\u003e Honor explicit empty TOML table header overrides (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1027\"\u003e#1027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.15.0...v2.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.48 to 2.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.4\u003c/h1\u003e\n\u003cp\u003eReleased: October 7, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [regression]\u003c/strong\u003e Fixed regression caused by \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13333\"\u003e#13333\u003c/a\u003e where assigning a\n\u003ccode\u003eMetaData\u003c/code\u003e object to the \u003ccode\u003emetadata\u003c/code\u003e attribute of a mapped\nDeclarative class, in order to place that class's \u003ccode\u003eTable\u003c/code\u003e in a\n\u003ccode\u003eMetaData\u003c/code\u003e collection other than that of the\n\u003ccode\u003e_orm.registry\u003c/code\u003e, would emit a warning that the attribute name\n\u003ccode\u003emetadata\u003c/code\u003e should be left reserved.  The warning is now emitted only\nwhen the \u003ccode\u003emetadata\u003c/code\u003e attribute is assigned to an object other than a\n\u003ccode\u003eMetaData\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13659\"\u003e#13659\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug] [regression]\u003c/strong\u003e Fixed regression from the 1.4 series where the DBAPI cursor used for a\ncompiled statement that returns no rows, which includes DDL constructs\nsuch as \u003ccode\u003eCreateTable\u003c/code\u003e and \u003ccode\u003eDropTable\u003c/code\u003e as well as the\nSAVEPOINT, ROLLBACK TO SAVEPOINT and RELEASE SAVEPOINT statements emitted\nby \u003ccode\u003e_engine.Connection.begin_nested()\u003c/code\u003e, was not closed after\nexecution, and was instead left to be released when garbage collected.\nThe cursor is now closed immediately, as was the case in 1.3 and as is\nalready the case for INSERT, UPDATE, DELETE and \u003ccode\u003e_sql.text()\u003c/code\u003e\nstatements.\u003c/p\u003e\n\u003cp\u003eThis change is also \u003cstrong\u003ebackported\u003c/strong\u003e to: 2.0.55\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13640\"\u003e#13640\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Fixed issue in the\n\u003ccode\u003e_engine.Connection.execution_options.logging_token\u003c/code\u003e option\nwhere setting the value to \u003ccode\u003eNone\u003c/code\u003e or another false value would raise\n\u003ccode\u003eAttributeError\u003c/code\u003e if a logging token had not already been established on\nthat \u003ccode\u003e_engine.Connection\u003c/code\u003e, such as on a newly checked out\nconnection, when the option was set at the \u003ccode\u003e_engine.Engine\u003c/code\u003e level,\nor when the token was reset to \u003ccode\u003eNone\u003c/code\u003e more than once.  Regression\nintroduced in 2.0.30 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11210\"\u003e#11210\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis change is also \u003cstrong\u003ebackported\u003c/strong\u003e to: 2.0.55\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13641\"\u003e#13641\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug] [regression]\u003c/strong\u003e Fixed regression where iterating a \u003ccode\u003eResult\u003c/code\u003e directly would create\nreference cycles that prevented the \u003ccode\u003eResult\u003c/code\u003e along with the DBAPI\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.18.4 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026qu...\n\n_Description has been truncated_","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/621","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/621","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/621/packages"},{"uuid":"5900221347","node_id":"PR_kwDOTn0IFs8AAAABJChWcQ","number":37,"state":"open","title":"Bump the pip-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-17T15:55:32.000Z","updated_at":"2026-10-17T16:24:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-dependencies","update_count":27,"packages":[{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"argon2-cffi-bindings","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/hynek/argon2-cffi-bindings"},{"name":"click","old_version":"8.1.8","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"dnspython","old_version":"2.8.0","new_version":"2.9.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"greenlet","old_version":"3.2.5","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.18","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pwdlib","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/frankie567/pwdlib"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.16.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pymysql","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/PyMySQL/PyMySQL"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"sqlalchemy","old_version":"2.0.51","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"tomli","old_version":"2.4.1","new_version":"2.5.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"uvicorn","old_version":"0.39.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.22.1","new_version":"0.23.0","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"17.2","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-dependencies group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [argon2-cffi-bindings](https://github.com/hynek/argon2-cffi-bindings) | `25.1.0` | `26.1.0` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.2` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.8.0` | `2.9.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.5` | `3.5.6` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.1` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pwdlib](https://github.com/frankie567/pwdlib) | `0.3.0` | `0.3.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.16.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.50.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pymysql](https://github.com/PyMySQL/PyMySQL) | `1.2.0` | `1.2.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.4` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.51` | `2.1.4` |\n| [tomli](https://github.com/hukkin/tomli) | `2.4.1` | `2.5.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.39.0` | `0.54.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.22.1` | `0.23.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.3.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `17.2` |\n\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argon2-cffi-bindings` from 25.1.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/releases\"\u003eargon2-cffi-bindings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eBig and scary release! We've switched from \u003cem\u003esetuptools\u003c/em\u003e to \u003cem\u003escikit-build-core\u003c/em\u003e and added wheels for \u003cem\u003epyemscripten\u003c/em\u003e and (provisionally) RISC-V.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://kraken.tech\"\u003eKraken Tech\u003c/a\u003e (@\u003ca href=\"https://github.com/kraken-tech\"\u003ekraken-tech\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://www.testmuai.com\"\u003eTestMu AI Open Source Office (Formerly LambdaTest)\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://www.todoist.com/\"\u003eTodoist Inc\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://miketheman.dev\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), \u003ca href=\"https://github.com/asweigart/readal\"\u003eAl Sweigart\u003c/a\u003e (@\u003ca href=\"https://github.com/asweigart\"\u003easweigart\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003cp\u003eVendoring \u003cem\u003eArgon2\u003c/em\u003e @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.15 wheels. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/112\"\u003e#112\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePyPy 3.11 wheels.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLinux on RISC-V 64bit wheels. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/106\"\u003e#106\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003epyemscripten\u003c/em\u003e wheels for Python 3.13 and 3.14. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/129\"\u003e#129\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe bindings are now built with \u003ca href=\"https://scikit-build-core.readthedocs.io/\"\u003e\u003cem\u003escikit-build-core\u003c/em\u003e\u003c/a\u003e and CMake instead of \u003cem\u003esetuptools\u003c/em\u003e. The C source for the extension module is generated from \u003ccode\u003e_ffi.cdef.txt\u003c/code\u003e and \u003ccode\u003e_ffi.csrc.c\u003c/code\u003e using CFFI's \u003ca href=\"https://cffi.readthedocs.io/en/stable/cffi-gen-src.html\"\u003e\u003ccode\u003ecffi-gen-src\u003c/code\u003e\u003c/a\u003e tool and committed to the repository as \u003ccode\u003e_ffi.c\u003c/code\u003e. The build compiles that file directly and needs no CFFI at build time. Building from source requires CMake now. If none is found, it is downloaded automatically as part of the build. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.9 support. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.13t wheels. Free-threading on 3.13 was always only experimental and both \u003ca href=\"https://redirect.github.com/pypa/manylinux/issues/1882\"\u003e\u003cem\u003emanylinux\u003c/em\u003e\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/cibuildwheel/pull/2684\"\u003e\u003cem\u003ecibuildwheel\u003c/em\u003e\u003c/a\u003e dropped support for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/blob/main/CHANGELOG.md\"\u003eargon2-cffi-bindings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/25.1.0...26.1.0\"\u003e26.1.0\u003c/a\u003e - 2026-08-20\u003c/h2\u003e\n\u003cp\u003eVendoring \u003cem\u003eArgon2\u003c/em\u003e @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.15 wheels.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/112\"\u003e#112\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePyPy 3.11 wheels.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLinux on RISC-V 64bit wheels.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/106\"\u003e#106\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003epyemscripten\u003c/em\u003e wheels for Python 3.13 and 3.14.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/129\"\u003e#129\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe bindings are now built with \u003ca href=\"https://scikit-build-core.readthedocs.io/\"\u003e\u003cem\u003escikit-build-core\u003c/em\u003e\u003c/a\u003e and CMake instead of \u003cem\u003esetuptools\u003c/em\u003e.\nThe C source for the extension module is generated from \u003ccode\u003e_ffi.cdef.txt\u003c/code\u003e and \u003ccode\u003e_ffi.csrc.c\u003c/code\u003e using CFFI's \u003ca href=\"https://cffi.readthedocs.io/en/stable/cffi-gen-src.html\"\u003e\u003ccode\u003ecffi-gen-src\u003c/code\u003e\u003c/a\u003e tool and committed to the repository as \u003ccode\u003e_ffi.c\u003c/code\u003e.\nThe build compiles that file directly and needs no CFFI at build time.\nBuilding from source requires CMake now.\nIf none is found, it is downloaded automatically as part of the build.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.9 support.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.13t wheels.\nFree-threading on 3.13 was always only experimental and both \u003ca href=\"https://redirect.github.com/pypa/manylinux/issues/1882\"\u003e\u003cem\u003emanylinux\u003c/em\u003e\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/cibuildwheel/pull/2684\"\u003e\u003cem\u003ecibuildwheel\u003c/em\u003e\u003c/a\u003e dropped support for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/fb50afcbb80aee5e87d6f8b1d15e7238321387c9\"\u003e\u003ccode\u003efb50afc\u003c/code\u003e\u003c/a\u003e Prepare 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/2e198d004abaa947269de88c0c0aa58b3c13db3e\"\u003e\u003ccode\u003e2e198d0\u003c/code\u003e\u003c/a\u003e update dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/5ab01f959c759b2d8ba74fc7416f03085f449fab\"\u003e\u003ccode\u003e5ab01f9\u003c/code\u003e\u003c/a\u003e Switch from setuptools to scikit-build-core (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/04ace1a695f4a9df96283f84d697f3268bcbeb9d\"\u003e\u003ccode\u003e04ace1a\u003c/code\u003e\u003c/a\u003e update (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/58eb37ee267a87b97a7b3462ff9299e93d059025\"\u003e\u003ccode\u003e58eb37e\u003c/code\u003e\u003c/a\u003e Amend AI policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/c1d25ed1bb3646cdf7c7fec329f8337f8f82f6ce\"\u003e\u003ccode\u003ec1d25ed\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/e6c20e9aec09b0ca05c69034f83c9665ddec3ab2\"\u003e\u003ccode\u003ee6c20e9\u003c/code\u003e\u003c/a\u003e update dev (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/138\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/abcbd7b35b7d322ff9bc3226a60f3dae223f3e78\"\u003e\u003ccode\u003eabcbd7b\u003c/code\u003e\u003c/a\u003e Build Python 3.15 wheels (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/112\"\u003e#112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/af04999843b1e12dfbfa50254020c3fdd1c9c259\"\u003e\u003ccode\u003eaf04999\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/42976a3db475a24f7a62c89bead47a359d23cb4c\"\u003e\u003ccode\u003e42976a3\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python in the github-actions group (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/25.1.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.0\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003eissue 2266\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coverage.html#coverage.Coverage.switch_context\"\u003eCoverage.switch_context()\u003c/a\u003e method now returns the previous context.\u003c/li\u003e\n\u003cli\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003epull 2268\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixes to validation of options and configuration settings:\n\u003cul\u003e\n\u003cli\u003eNegative precision settings now always cause useful error messages (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003epull 2261\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn invalid regex in the \u003ccode\u003e--contexts\u003c/code\u003e option (or the \u003ccode\u003e[report] contexts\u003c/code\u003e setting) reported a confusing “Couldn’t use data file …: user-defined function raised exception” error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003epull 2262\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNon-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e entry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the \u003ccode\u003e[paths]\u003c/code\u003e section (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003epull 2263\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like \u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can’t reach the subprocesses. The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as the entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e slipped through and failed later with “Can’t combine statement coverage data with branch data”. Each named concurrency library is now properly considered (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2270\"\u003epull 2270\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any measured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on Windows. The original extension is now restored on the annotated copy (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003epull 2265\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.0\"\u003ecoverage 7.16.0\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.0\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the Total row in the footer of the HTML report's index page was\nrecomputed in JavaScript with rounding that could disagree with the total\nthe server rendered in the heading, including showing \u003ccode\u003e100%\u003c/code\u003e when coverage\nwas not complete.  The footer now clamps values the way the rest of the\nreport does, and when nothing is filtered out it is shown exactly as the\nserver rendered it, so the two can't disagree.  That also keeps rows the\nreport omits (\u003ccode\u003e--skip-covered\u003c/code\u003e drops fully covered files) in the total.\nFixes \u003ccode\u003eissue 2256\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _issue 2256: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2256\"\u003ecoveragepy/coveragepy#2256\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003cp\u003eVersion 7.16.0 — 2026-08-28\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.8.0 to 2.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.9.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a potential \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003eexcessive CPU consumption\u003c/a\u003e issue.   Thanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos, for discovering and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.11.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Nicki Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression chain length is limited to 16.  Prior to this change,\na maliciously crafted DNS message could cause\ndns.name.from_wire_parser() to use excessive CPU for DNS name\ndecompression. Applications which processed untrusted DNS wire form\nmessages with dnspython could be degraded or DoS'd by the extra CPU\nuse required.\u003c/p\u003e\n\u003cp\u003eThanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos\nfor finding and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003ehttps://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHttpx2 has replaced httpx for HTTPS TCP connections.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.11.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDNSSEC now supports ML-DSA-44, a post-quantum signature algorithm.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NSEC3 Next Hashed Owner Name in presentation format is now decoded as\nbase32hex (RFC 5155 Section 1.3, RFC 4648 Extended Hex Alphabet).  The letters\nW, X, Y, and Z are not in that alphabet; they used to be accepted and silently\ndecoded to a different owner name, so \u003ccode\u003eto_text\u003c/code\u003e of the result did not match\nthe input.  They are now rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NID and L64 node/locator ids in presentation format are now rejected when\na group contains anything other than hex digits. A sign or underscore, which\n\u003ccode\u003eint()\u003c/code\u003e silently accepts, produced a record whose text form did not parse\nback the same way (RFC 6742).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRdata of a known type in the generic \u003ccode\u003e\\#\u003c/code\u003e syntax, such as an NS record in a\nzone file, no longer fails to parse when it contains a name under the origin.\nIts names are relativized as in the type's own text form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe SVCB and HTTPS \u003ccode\u003eech\u003c/code\u003e parameter value must now be an ECHConfigList with a\ncorrect length prefix and at least 4 octets of content (RFC 9848, RFC 9849).\nThe individual ECHConfig structures are not checked.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS SvcParamKeys in presentation format, including those listed in\n\u003ccode\u003emandatory\u003c/code\u003e, must now be spelled as RFC 9460 requires: 1-63 lowercase\nletters, digits, or hyphens.  Uppercase keys such as \u003ccode\u003eALPN\u003c/code\u003e and keys with\nunderscores such as \u003ccode\u003eno_default_alpn\u003c/code\u003e are rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS presentation format parsing now follows the escaping rules of\nRFC 9460.  SvcParamKeys may not contain escapes (e.g. \u003ccode\u003e\\097lpn=h2\u003c/code\u003e), and in\ncomma-separated values (\u003ccode\u003ealpn\u003c/code\u003e, \u003ccode\u003edocpath\u003c/code\u003e) only \u003ccode\u003e\\,\u003c/code\u003e and \u003ccode\u003e\\\\\u003c/code\u003e are\nvalid escapes after character-string decoding (e.g. \u003ccode\u003ealpn=\u0026quot;h2\\\\x\u0026quot;\u003c/code\u003e is\nrejected).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/e790c8f20a67ad439c7aafef2321e161c6028eee\"\u003e\u003ccode\u003ee790c8f\u003c/code\u003e\u003c/a\u003e add missing test file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b72af6723fa0df2113522132363eeda99c9abaa6\"\u003e\u003ccode\u003eb72af67\u003c/code\u003e\u003c/a\u003e CI release branch update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bdd62fed595a80b65feac75d7c2e1e3b908c56e6\"\u003e\u003ccode\u003ebdd62fe\u003c/code\u003e\u003c/a\u003e release prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bafc96391dc352832fb17cc7939782735b642fb8\"\u003e\u003ccode\u003ebafc963\u003c/code\u003e\u003c/a\u003e Merge branch 'decompression-limit'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c5fecf515b4fa3a12e882bf80da232c94134cf50\"\u003e\u003ccode\u003ec5fecf5\u003c/code\u003e\u003c/a\u003e release tidying\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c7686f3ef513d0da121f57fe1899bf2a2997da35\"\u003e\u003ccode\u003ec7686f3\u003c/code\u003e\u003c/a\u003e update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/3c855c8d8f8269eb672aef3679cd2e33db924c03\"\u003e\u003ccode\u003e3c855c8\u003c/code\u003e\u003c/a\u003e more type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/52815c91bbd831f6cbe85ed7bba4d7b8e1c25400\"\u003e\u003ccode\u003e52815c9\u003c/code\u003e\u003c/a\u003e type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/f563427fecd9c0c4ba60cf002f2f33a5c396dd2a\"\u003e\u003ccode\u003ef563427\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b485e460c266540a1a09ca6d8d1d7b685b1d3023\"\u003e\u003ccode\u003eb485e46\u003c/code\u003e\u003c/a\u003e Limit decompression to a chain length of at most 16 pointers.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.8.0...v2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.2.5 to 3.5.6\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.6 (2026-09-14)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect a race condition that could lead to garbage collection\nunintentionally being disabled. See \u003ccode\u003ePR 529 \u0026lt;https://github.com/python-greenlet/greenlet/pull/529\u0026gt;\u003c/code\u003e_ by Yurii.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.5 (2026-08-10)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eLink the C++ runtime statically into the Windows wheels again, as the\nAppveyor builds did through 3.3.0. Since 3.3.1 \u003ccode\u003e_greenlet.pyd\u003c/code\u003e\nimported \u003ccode\u003eMSVCP140.dll\u003c/code\u003e, which no Windows CPython distribution ships,\nso importing greenlet failed on machines without the Visual C++\nredistributable. See \u003ccode\u003eissue 525 \u0026lt;https://github.com/python-greenlet/greenlet/issues/525\u0026gt;\u003c/code\u003e_. Issue\nand pull request by Daniel Sticker.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\nBinary 3.15 wheels are now built with 3.15.0rc1. This should be\ncompatible with future 3.15 releases and is believed compatible\nwith 3.15b4 as well (but not earlier versions).\u003c/p\u003e\n\u003ch1\u003e3.5.4 (2026-07-22)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix a crash (segfault) on free-threaded builds of Python 3.14 and\nlater when the garbage collector runs while a greenlet that was\nstarted from a non-empty C-stack-reference state is active.\nSee \u003ccode\u003eissue 515 \u0026lt;https://github.com/python-greenlet/greenlet/issues/515\u0026gt;\u003c/code\u003e_.\nThanks to ddorian and Kumar Aditya.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a potential use-after-free on free-threaded builds of Python 3.14\nand later when the garbage collector runs while a greenlet is\nsuspended holding a \u003ccode\u003e_PyCStackRef\u003c/code\u003e (for example, mid attribute\nresolution). See\n\u003ccode\u003eissue 515 \u0026lt;https://github.com/python-greenlet/greenlet/issues/515\u0026gt;\u003c/code\u003e_.\nThanks to ddorian and Kumar Aditya.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a deadlock on free-threaded builds when a greenlet switch happened\nwhile a \u003ccode\u003ePyCriticalSection\u003c/code\u003e was held -- for example inside asyncio's\n\u003ccode\u003eTask.__step\u003c/code\u003e, which holds one on the running task for the duration of\nthe step. See \u003ccode\u003ePR 519 \u0026lt;https://github.com/python-greenlet/greenlet/pull/519/\u0026gt;\u003c/code\u003e.\nThanks to ddorian and Kumar Aditya.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/abfe740315a9926ff180c622cf02f122c07f9126\"\u003e\u003ccode\u003eabfe740\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e23e3e47df21bbc7a83219621ce4966d349f7d2b\"\u003e\u003ccode\u003ee23e3e4\u003c/code\u003e\u003c/a\u003e Change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/8de830f6df6fefd533fedbe4bb0a2028bcf77372\"\u003e\u003ccode\u003e8de830f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e from Georggi/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/72d7cacf4cf667f92786db306be095b6041bca5a\"\u003e\u003ccode\u003e72d7cac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/530\"\u003e#530\u003c/a\u003e from python-greenlet/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ac01b7d1a6b3a4d2477c17a1047af6d0056d69a7\"\u003e\u003ccode\u003eac01b7d\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e18f5a6d2696c031d34cf4933dcdd6a8e37f6f85\"\u003e\u003ccode\u003ee18f5a6\u003c/code\u003e\u003c/a\u003e Simplify GCDisabledGuard constructor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6aaf3af698aa7789075a904e5bbb70e24df06553\"\u003e\u003ccode\u003e6aaf3af\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ddb14535002029347139ce137c137a04eecf61c5\"\u003e\u003ccode\u003eddb1453\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/7de515cc948fcbca31abc672e0db9bf5d51460a5\"\u003e\u003ccode\u003e7de515c\u003c/code\u003e\u003c/a\u003e Update CHANGES: Credit for issue 525 and note about 3.15 binary wheels [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/f3746aa53b16a2a13e8894e3fd91a13c4578a428\"\u003e\u003ccode\u003ef3746aa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/526\"\u003e#526\u003c/a\u003e from stickerdaniel/windows-static-runtime\u003c/l...\n\n_Description has been truncated_","html_url":"https://github.com/garrib10/job-search-manager-api/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/garrib10%2Fjob-search-manager-api/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"},{"uuid":"5883884609","node_id":"PR_kwDOVMN_188AAAABI1sacg","number":8,"state":"open","title":"Bump uvicorn from 0.47.0 to 0.54.0 in /backend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-16T12:08:25.000Z","updated_at":"2026-10-16T12:08:28.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"uvicorn","old_version":"0.47.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.47.0 to 0.54.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uvicorn\u0026package-manager=pip\u0026previous-version=0.47.0\u0026new-version=0.54.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/jdermlife/MyForever/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdermlife%2FMyForever/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"5865447827","node_id":"PR_kwDOVJ8Ev88AAAABIm9TBA","number":24,"state":"closed","title":"build(deps): bump the python-minor-and-patch group in /services/source-worker with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-15T12:33:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-15T11:42:55.000Z","updated_at":"2026-10-15T12:33:11.000Z","time_to_close":3014,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-minor-and-patch","update_count":8,"packages":[{"name":"fastapi","old_version":"0.115.0","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.30.6","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"pydantic","old_version":"2.9.1","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"boto3","old_version":"1.35.10","new_version":"1.43.111","repository_url":"https://github.com/boto/boto3"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"instaloader","old_version":"4.13.1","new_version":"4.15.3","repository_url":"https://github.com/instaloader/instaloader"}],"path":"/services/source-worker","ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group in /services/source-worker with 8 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.0` | `0.143.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.54.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.1` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.15.0` |\n| [boto3](https://github.com/boto/boto3) | `1.35.10` | `1.43.111` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.32.0` |\n| [instaloader](https://github.com/instaloader/instaloader) | `4.13.1` | `4.15.3` |\n\nUpdates `fastapi` from 0.115.0 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.0...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.30.6 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.30.6...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.27.2 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.2...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.9.1 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.9.1...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.5.2 to 2.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.15.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003eBehavior changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ecase_sensitive\u003c/code\u003e now applies to init kwargs and config-file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/900\"\u003e#900\u003c/a\u003e). \u003ccode\u003eInitSettingsSource\u003c/code\u003e and the JSON/TOML/YAML config sources previously ignored \u003ccode\u003ecase_sensitive\u003c/code\u003e. Since it defaults to \u003ccode\u003eFalse\u003c/code\u003e, \u003cstrong\u003ecase-insensitive matching is now the default\u003c/strong\u003e for these sources — e.g. \u003ccode\u003eSettings(TeSt=...)\u003c/code\u003e now populates a \u003ccode\u003etest\u003c/code\u003e field where it previously did not. Nested keys are still matched case-sensitively.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFields with unresolved forward references now emit a warning\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/901\"\u003e#901\u003c/a\u003e). Settings sources can silently fail to resolve such fields; they now raise \u003ccode\u003eIncompleteFieldDefinitionWarning\u003c/code\u003e telling you to call \u003ccode\u003emodel_rebuild()\u003c/code\u003e. If you have \u003ccode\u003efilterwarnings = error\u003c/code\u003e configured, this may surface as a new failure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNon-JSON env values for strict fields now raise \u003ccode\u003eValidationError\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/926\"\u003e#926\u003c/a\u003e) instead of a less specific error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eShow environment variable names in CLI help\u003c/strong\u003e via \u003ccode\u003ecli_show_env_vars=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/860\"\u003e#860\u003c/a\u003e), so generated \u003ccode\u003e--help\u003c/code\u003e output doubles as configuration documentation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePYDANTIC_SETTINGS_DEBUG\u003c/code\u003e for debugging settings resolution\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/906\"\u003e#906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/913\"\u003e#913\u003c/a\u003e). Set it to a truthy value with \u003ccode\u003eDEBUG\u003c/code\u003e logging enabled to see each source's contribution in priority order, which source won for each value, and which \u003ccode\u003eenv_file\u003c/code\u003e/secret files were probed, loaded, or skipped — the long-standing \u0026quot;why isn't my \u003ccode\u003e.env\u003c/code\u003e being picked up?\u0026quot; question.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003etoml_table_header\u003c/code\u003e for regular TOML files\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/882\"\u003e#882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/886\"\u003e#886\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/887\"\u003e#887\u003c/a\u003e), letting you root settings at a nested table in any TOML file, not just \u003ccode\u003epyproject.toml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eTraversable\u003c/code\u003e support for JSON/TOML/YAML file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/902\"\u003e#902\u003c/a\u003e), so you can load config packaged inside a distribution — including files inside a zip or wheel — via \u003ccode\u003eimportlib.resources.files(...)\u003c/code\u003e without casting to \u003ccode\u003ePath\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGCP: \u003ccode\u003eproject_id\u003c/code\u003e can come from an earlier settings source\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003e#878\u003c/a\u003e), rather than only from the constructor or \u003ccode\u003eGOOGLE_CLOUD_PROJECT\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix env vars not loading on Windows with \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/894\"\u003e#894\u003c/a\u003e). Windows upper-cases \u003ccode\u003eos.environ\u003c/code\u003e keys, so fields raised \u003ccode\u003eField required\u003c/code\u003e instead of picking up their values.\u003c/li\u003e\n\u003cli\u003eRead secret files as UTF-8 instead of the platform locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/917\"\u003e#917\u003c/a\u003e). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAliasPath\u003c/code\u003e on nested model fields not JSON-decoding env values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/898\"\u003e#898\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix case-insensitive matching for \u003cstrong\u003eoptional\u003c/strong\u003e nested models (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/905\"\u003e#905\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix dotenv extras being wrongly claimed by a complex field sharing a name prefix (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/912\"\u003e#912\u003c/a\u003e) — e.g. \u003ccode\u003edbx_token\u003c/code\u003e being swallowed by a \u003ccode\u003edb: dict\u003c/code\u003e field.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003enested_model_default_partial_update=True\u003c/code\u003e corrupting discriminated unions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/876\"\u003e#876\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSecret\u003c/code\u003e subclasses crashing when loaded from the environment (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/920\"\u003e#920\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix enum names not parsing through nested annotations such as \u003ccode\u003eOptional[Annotated[MyEnum, ...]]\u003c/code\u003e with \u003ccode\u003eenv_parse_enums=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/910\"\u003e#910\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn empty \u003ccode\u003eyaml_config_section\u003c/code\u003e now falls back to defaults instead of raising \u003ccode\u003eAttributeError: 'NoneType' object has no attribute 'keys'\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/914\"\u003e#914\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e no longer follows symlinks pointing outside \u003ccode\u003esecrets_dir\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003e#889\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eGCP: skip the \u003ccode\u003elist_secrets\u003c/code\u003e call when \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003e#862\u003c/a\u003e), lowering the required IAM permissions to just \u003ccode\u003eroles/secretmanager.secretAccessor\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAWS: \u003ccode\u003etypes-boto3[secretsmanager]\u003c/code\u003e is no longer required at runtime (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/880\"\u003e#880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument JSON parsing of complex env values, plus a comma-separated-values recipe (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/919\"\u003e#919\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRecommend an async settings loading pattern (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/908\"\u003e#908\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify behavior when an unprefixed value is present in a dotenv file (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/895\"\u003e#895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify environment variable helper descriptions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003e#867\u003c/a\u003e) and fix assorted typos (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/904\"\u003e#904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate documentation link for Pydantic settings by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/863\"\u003epydantic/pydantic-settings#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/865\"\u003epydantic/pydantic-settings#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify environment variable helper descriptions by \u003ca href=\"https://github.com/vip892766gma\"\u003e\u003ccode\u003e@​vip892766gma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003epydantic/pydantic-settings#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/870\"\u003epydantic/pydantic-settings#870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/875\"\u003epydantic/pydantic-settings#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip list_secrets call when case_sensitive=True by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003epydantic/pydantic-settings#862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGoogleSecretManagerSettingsSource: read project_id from previous sources by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003epydantic/pydantic-settings#878\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f725ca187bee4212e9ef799eefa3cb25be788462\"\u003e\u003ccode\u003ef725ca1\u003c/code\u003e\u003c/a\u003e Prepare release 2.15.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/930\"\u003e#930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/28f35c25fac5d61210d532c31a300d49c0b684a4\"\u003e\u003ccode\u003e28f35c2\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9056db049560897229f2603493753bae27b6479f\"\u003e\u003ccode\u003e9056db0\u003c/code\u003e\u003c/a\u003e test: move function-local imports to the top of test modules (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/927\"\u003e#927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f077e3ab3d9492838c7ef9275a88c95134688095\"\u003e\u003ccode\u003ef077e3a\u003c/code\u003e\u003c/a\u003e fix: raise ValidationError for non-JSON env values on strict fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/926\"\u003e#926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ae25d703c458b57f5a9a425f6ec9a28ad868f980\"\u003e\u003ccode\u003eae25d70\u003c/code\u003e\u003c/a\u003e fix: treat Secret subclasses as non-complex fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/716\"\u003e#716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/798dcea2a23b08a3e9b37994014e036224f6dd18\"\u003e\u003ccode\u003e798dcea\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/a190041d353bda2d432ea1908de4c499ae89ee0a\"\u003e\u003ccode\u003ea190041\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/925\"\u003e#925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/5d9333282b5c85d65a457c45e4476369b9949726\"\u003e\u003ccode\u003e5d93332\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/921\"\u003e#921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d2fdeda91157140d2ff0c05404f32a9b1218115a\"\u003e\u003ccode\u003ed2fdeda\u003c/code\u003e\u003c/a\u003e fix: read secret files as UTF-8 instead of the locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/917\"\u003e#917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/2256a4e60f83f2da81e7654252562fc4841aa5d4\"\u003e\u003ccode\u003e2256a4e\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/915\"\u003e#915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.5.2...v2.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.35.10 to 1.43.111\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c14ee96508bec2751d72e973bc067c9d7ab34793\"\u003e\u003ccode\u003ec14ee96\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.111'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2309640b015e63201c612ee3eeea175941703f98\"\u003e\u003ccode\u003e2309640\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.111\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1d6d2d9a8464e704b37da8f9b47f232eeab4a161\"\u003e\u003ccode\u003e1d6d2d9\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d948ed5c4b3ba0e93087113289f0aaaf70cd3c6c\"\u003e\u003ccode\u003ed948ed5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.110'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9b19947c3cfcef75509aa9cf9c95447d8d732282\"\u003e\u003ccode\u003e9b19947\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.110' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dedcde7ab830a2c18b22ede2cec687f8c83029a4\"\u003e\u003ccode\u003ededcde7\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.110\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e09fb1d72d443fc5a2350f468c9117d3c8d00280\"\u003e\u003ccode\u003ee09fb1d\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/76f85a723a20f562fc0d7eb1437d7b1865e01b7a\"\u003e\u003ccode\u003e76f85a7\u003c/code\u003e\u003c/a\u003e Bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8afafece9c81678879a0580e69a1b57325db7351\"\u003e\u003ccode\u003e8afafec\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.109'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1a2fc5c27d8830186f75423e25293dc5a97694bc\"\u003e\u003ccode\u003e1a2fc5c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.109' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.35.10...1.43.111\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.30.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1367\"\u003e#1367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 1b118464 and 58c0c595)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 8d2a5aed)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake pool \u003ccode\u003emin_size\u003c/code\u003e a maintained connection floor and add \u003ccode\u003einit_size\u003c/code\u003e to\ncontrol the number of connections opened at startup (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e).\nIdle connections at or below \u003ccode\u003emin_size\u003c/code\u003e are retained, and closed connections\nare replaced in the background. \u003ccode\u003einit_size\u003c/code\u003e defaults to \u003ccode\u003emin_size\u003c/code\u003e.\nTo preserve the previous behavior, where the pool could drain to zero,\nreplace \u003ccode\u003emin_size=N\u003c/code\u003e with \u003ccode\u003einit_size=N, min_size=0\u003c/code\u003e.\n(by \u003ca href=\"https://github.com/shatilov-diman\"\u003e\u003ccode\u003e@​shatilov-diman\u003c/code\u003e\u003c/a\u003e in 67a1cbc5)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003ehashlib.pbkdf2_hmac()\u003c/code\u003e for faster SCRAM password derivation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1359\"\u003e#1359\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/twelfthlabor\"\u003e\u003ccode\u003e@​twelfthlabor\u003c/code\u003e\u003c/a\u003e in 00319a9b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse the statement cache for \u003ccode\u003ecopy_records_to_table()\u003c/code\u003e introspection (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1360\"\u003e#1360\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/matemax\"\u003e\u003ccode\u003e@​matemax\u003c/code\u003e\u003c/a\u003e in dd058652)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClean up connections rejected by \u003ccode\u003etarget_session_attrs\u003c/code\u003e immediately so an\nunresponsive rejected host cannot delay the selected connection, and cleanup\ntasks cannot outlive the event loop. Rejected connections are aborted without\nwaiting for a graceful disconnect; servers may log \u0026quot;unexpected EOF on client\nconnection\u0026quot; if the Terminate message is not delivered before the transport\ncloses.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a connection pool deadlock when releasing a connection after a protocol\nabort (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1324\"\u003e#1324\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/pchaseh\"\u003e\u003ccode\u003e@​pchaseh\u003c/code\u003e\u003c/a\u003e in 4a83cc2f)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHonor \u003ccode\u003eConnection.close(timeout=...)\u003c/code\u003e while waiting for a pending\ncancellation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1361\"\u003e#1361\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in c06bcb4d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent stuck cancellation from blocking connection teardown or pool release\nby bounding cancellation with the command or release timeout (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1370\"\u003e#1370\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 4cf02203)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePreserve the server error when the connection closes mid-operation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1369\"\u003e#1369\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/RitiGrover\"\u003e\u003ccode\u003e@​RitiGrover\u003c/code\u003e\u003c/a\u003e in 6c8f1a7a)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix COPY cleanup when a records generator raises, preserving the original\nexception and avoiding protocol desynchronization and stalled rollback (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1358\"\u003e#1358\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/CodingCossack\"\u003e\u003ccode\u003e@​CodingCossack\u003c/code\u003e\u003c/a\u003e in fdc6bc8f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/d701e11a392b0e3b93b7af4a05c1cdadddf75f8f\"\u003e\u003ccode\u003ed701e11\u003c/code\u003e\u003c/a\u003e asyncpg v0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b04f8f299dd05c380e3c14d32bd1c881063c2b58\"\u003e\u003ccode\u003eb04f8f2\u003c/code\u003e\u003c/a\u003e Bump to macOS 26 in runners, set deployment target to 11 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1384\"\u003e#1384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/3934d77bfb558527a3708be686b6e0e7f90ce2b3\"\u003e\u003ccode\u003e3934d77\u003c/code\u003e\u003c/a\u003e tests: Capture expected pool retry warnings during role changes (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1383\"\u003e#1383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/2c3750179e0289b2fd03dc2baa8e87f75afa174b\"\u003e\u003ccode\u003e2c37501\u003c/code\u003e\u003c/a\u003e tests: Avoid DeprecationWarning when settings up uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1382\"\u003e#1382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b7eea79c920832d353073951c28aca687d532b4a\"\u003e\u003ccode\u003eb7eea79\u003c/code\u003e\u003c/a\u003e Test pool min_size backoff on target attribute mismatch (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1381\"\u003e#1381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/46dda9139700dc18e63ae638021edfaddf0bf3a4\"\u003e\u003ccode\u003e46dda91\u003c/code\u003e\u003c/a\u003e Terminate rejected target_session_attrs candidates before returning (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1380\"\u003e#1380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/8d2a5aedbf36c6116212454ebeb8c242140f76e5\"\u003e\u003ccode\u003e8d2a5ae\u003c/code\u003e\u003c/a\u003e Support PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/58c0c595272cb91b81be82620c479ab5431b4d70\"\u003e\u003ccode\u003e58c0c59\u003c/code\u003e\u003c/a\u003e Bump uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/67a1cbc5eb4a6aa5df140b27f48488921521d6f7\"\u003e\u003ccode\u003e67a1cbc\u003c/code\u003e\u003c/a\u003e Make pool min_size a maintained connection floor (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/25aaaf5412cf868388d076f359d12feb2479a4bb\"\u003e\u003ccode\u003e25aaaf5\u003c/code\u003e\u003c/a\u003e fix: allow cursors in external transactions (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `instaloader` from 4.13.1 to 4.15.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/instaloader/instaloader/releases\"\u003einstaloader's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.15.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix profile resolution (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2701\"\u003e#2701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix post metadata fetching (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2706\"\u003e#2706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix caption mention being missed after a newline (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2712\"\u003e#2712\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/hyperplural\"\u003e\u003ccode\u003e@​hyperplural\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/mayman20\"\u003e\u003ccode\u003e@​mayman20\u003c/code\u003e\u003c/a\u003e for contributing to this release!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/socialapishub\"\u003e\u003ccode\u003e@​socialapishub\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/rocketapi-io\"\u003e\u003ccode\u003e@​rocketapi-io\u003c/code\u003e\u003c/a\u003e and all other sponsors for supporting this release!\u003c/p\u003e\n\u003cp\u003eIf you are also interested in supporting the development of Instaloader, see \u003ca href=\"https://instaloader.github.io/sponsors.html\"\u003ehttps://instaloader.github.io/sponsors.html\u003c/a\u003e for a number of options.\u003c/p\u003e\n\u003ch2\u003eVersion 4.15.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix profile metadata GraphQL query flags (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2696\"\u003e#2696\u003c/a\u003e \u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2695\"\u003e#2695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGuard against null data in \u003ccode\u003ePost._obtain_metadata\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2705\"\u003e#2705\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2704\"\u003e#2704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor typing fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/mholzinger\"\u003e\u003ccode\u003e@​mholzinger\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/npiriou\"\u003e\u003ccode\u003e@​npiriou\u003c/code\u003e\u003c/a\u003e for contributing to this release!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/socialapishub\"\u003e\u003ccode\u003e@​socialapishub\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/rocketapi-io\"\u003e\u003ccode\u003e@​rocketapi-io\u003c/code\u003e\u003c/a\u003e and all other sponsors for supporting this release!\u003c/p\u003e\n\u003cp\u003eIf you are also interested in supporting the development of Instaloader, see \u003ca href=\"https://instaloader.github.io/sponsors.html\"\u003ehttps://instaloader.github.io/sponsors.html\u003c/a\u003e for a number of options.\u003c/p\u003e\n\u003ch2\u003eVersion 4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix obtaining Profiles (when logged in) by migrating to new GraphQL endpoints (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2651\"\u003e#2651\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2652\"\u003e#2652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSave resume information on exception (\u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/Mahdi-Soleimani/content-repurposing/pull/24","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahdi-Soleimani%2Fcontent-repurposing/issues/24","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/24/packages"},{"uuid":"5860921878","node_id":"PR_kwDOJKSTjM8AAAABIjVT5g","number":15528,"state":"open","title":"chore(backend/deps): bump the production-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["size/xl","dependencies","platform/backend","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-15T05:52:54.000Z","updated_at":"2026-10-15T05:58:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(backend/deps): bump","group_name":"production-dependencies","update_count":27,"packages":[{"name":"fastapi","old_version":"0.128.8","new_version":"0.142.4","repository_url":"https://github.com/fastapi/fastapi"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"google-cloud-storage","old_version":"3.14.1","new_version":"3.17.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"launchdarkly-server-sdk","old_version":"9.17.0","new_version":"9.18.1","repository_url":"https://github.com/launchdarkly/python-server-sdk"},{"name":"ollama","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/ollama/ollama-python"},{"name":"orjson","old_version":"3.12.0","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pywebpush","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/web-push-libs/pywebpush"},{"name":"python-dotenv","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2026.9.10","new_version":"2026.9.29","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentry-sdk","old_version":"2.69.1","new_version":"2.71.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"slack-sdk","old_version":"3.44.1","new_version":"3.45.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"sqlalchemy","old_version":"2.0.52","new_version":"2.0.54","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"typesafe-sdk","old_version":"0.6.0","new_version":"0.7.4","repository_url":"https://github.com/typesafe-ai/typesafe-sdk-python"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"aioclamd","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/hbldh/aioclamd"},{"name":"gcloud-aio-storage","old_version":"9.6.4","new_version":"9.6.5","repository_url":"https://github.com/talkiq/gcloud-aio"},{"name":"firecrawl-py","old_version":"4.42.0","new_version":"4.50.0","repository_url":"https://github.com/firecrawl/firecrawl"},{"name":"exa-py","old_version":"2.21.0","new_version":"2.25.0"},{"name":"posthog","old_version":"7.53.0","new_version":"7.67.0","repository_url":"https://github.com/posthog/posthog-python"},{"name":"fpdf2","old_version":"2.8.8","new_version":"2.8.9","repository_url":"https://github.com/py-pdf/fpdf2"},{"name":"langsmith","old_version":"0.12.4","new_version":"0.14.7","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"pymssql","old_version":"2.4.1","new_version":"2.4.4","repository_url":"https://github.com/pymssql/pymssql"},{"name":"pymysql","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/PyMySQL/PyMySQL"},{"name":"pypdfium2","old_version":"5.13.0","new_version":"5.14.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"tavily-python","old_version":"0.8.2","new_version":"0.8.5","repository_url":"https://github.com/tavily-ai/tavily-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production-dependencies group with 27 updates in the /autogpt_platform/backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.8` | `0.142.4` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [google-cloud-storage](https://github.com/googleapis/google-cloud-python) | `3.14.1` | `3.17.0` |\n| [launchdarkly-server-sdk](https://github.com/launchdarkly/python-server-sdk) | `9.17.0` | `9.18.1` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.2` | `0.6.3` |\n| [orjson](https://github.com/ijl/orjson) | `3.12.0` | `3.13.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [pywebpush](https://github.com/web-push-libs/pywebpush) | `2.3.0` | `2.5.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3` | `1.2.4` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.9.10` | `2026.9.29` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.69.1` | `2.71.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.44.1` | `3.45.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.52` | `2.0.54` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [typesafe-sdk](https://github.com/typesafe-ai/typesafe-sdk-python) | `0.6.0` | `0.7.4` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [aioclamd](https://github.com/hbldh/aioclamd) | `1.0.0` | `1.1.0` |\n| [gcloud-aio-storage](https://github.com/talkiq/gcloud-aio) | `9.6.4` | `9.6.5` |\n| [firecrawl-py](https://github.com/firecrawl/firecrawl) | `4.42.0` | `4.50.0` |\n| exa-py | `2.21.0` | `2.25.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `7.53.0` | `7.67.0` |\n| [fpdf2](https://github.com/py-pdf/fpdf2) | `2.8.8` | `2.8.9` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.12.4` | `0.14.7` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.4.1` | `2.4.4` |\n| [pymysql](https://github.com/PyMySQL/PyMySQL) | `1.2.0` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.13.0` | `5.14.0` |\n| [tavily-python](https://github.com/tavily-ai/tavily-python) | `0.8.2` | `0.8.5` |\n\n\nUpdates `fastapi` from 0.128.8 to 0.142.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16443\"\u003e#16443\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16437\"\u003e#16437\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16442\"\u003e#16442\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump urllib3 from 2.7.0 to 2.8.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16445\"\u003e#16445\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16438\"\u003e#16438\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e74b6e09106682de99e81e332deafb2995afa27b\"\u003e\u003ccode\u003ee74b6e0\u003c/code\u003e\u003c/a\u003e 👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16463\"\u003e#16463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6e659e84de09ee06e0499141f7f4951f478ddbac\"\u003e\u003ccode\u003e6e659e8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/923a78f6ab05cac8b5f2f9fcd484de7fae292592\"\u003e\u003ccode\u003e923a78f\u003c/code\u003e\u003c/a\u003e 📝 Remove HTML title from newsletter to avoid the tooltip (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16461\"\u003e#16461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.8...0.142.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.14.1 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage: v3.17.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.16.0...google-cloud-storage-v3.17.0\"\u003e3.17.0\u003c/a\u003e (2026-10-08)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e add OpenTelemetry metrics gating and configuration module (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18407\"\u003e#18407\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/654e7682083e920ab28db8d65f4e896decaf8a69\"\u003e654e768\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-cloud-storage: v3.16.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.15.1...google-cloud-storage-v3.16.0\"\u003e3.16.0\u003c/a\u003e (2026-10-01)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edeclare Python3.15 support (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8775794508e17150023c8e7152543410014458bf\"\u003e8775794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/372010680886d73acbafa4c6320a2fe4bb42a0e7\"\u003e\u003ccode\u003e3720106\u003c/code\u003e\u003c/a\u003e chore: release main (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18572\"\u003e#18572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/654e7682083e920ab28db8d65f4e896decaf8a69\"\u003e\u003ccode\u003e654e768\u003c/code\u003e\u003c/a\u003e feat(storage): add OpenTelemetry metrics gating and configuration module (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18\"\u003e#18\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/181e26a2475a028b2781caa75c10af0a99256431\"\u003e\u003ccode\u003e181e26a\u003c/code\u003e\u003c/a\u003e perf(spanner): eliminate redundant tracing span in run_in_transaction (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18357\"\u003e#18357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d28458cc2de86fd39c6c70b75e877ce72aa37bcf\"\u003e\u003ccode\u003ed28458c\u003c/code\u003e\u003c/a\u003e feat(google-devicesandservices-health): add v4beta (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18597\"\u003e#18597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/fd5a20e1efacbeb324337311b17481164781a267\"\u003e\u003ccode\u003efd5a20e\u003c/code\u003e\u003c/a\u003e chore(auth): remove rsa from optional dependencies (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18586\"\u003e#18586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/947949ba602195eaf93aa55e26cb33b95e1461f4\"\u003e\u003ccode\u003e947949b\u003c/code\u003e\u003c/a\u003e fix(firestore): add generic typing for DocumentSnapshot (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18587\"\u003e#18587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/b9ea66a5a2848c4c2287a1f78750b5124a27a336\"\u003e\u003ccode\u003eb9ea66a\u003c/code\u003e\u003c/a\u003e chore(firestore): correct samples link in README (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18473\"\u003e#18473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7d18b2575c5170518df0ba0e425d87a41f0eba56\"\u003e\u003ccode\u003e7d18b25\u003c/code\u003e\u003c/a\u003e feat(observability): implement universal 4-path OpenTelemetry tracing (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18433\"\u003e#18433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d0505e8bc7615f2c649d3e25ebc7e3ccca45f22b\"\u003e\u003ccode\u003ed0505e8\u003c/code\u003e\u003c/a\u003e feat: update API sources and regenerate (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18593\"\u003e#18593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/037036717747eb3f16e8b13a71c4c5e77824ba62\"\u003e\u003ccode\u003e0370367\u003c/code\u003e\u003c/a\u003e chore(main): release google-auth 2.61.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18595\"\u003e#18595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.14.1...google-cloud-storage-v3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `launchdarkly-server-sdk` from 9.17.0 to 9.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/launchdarkly/python-server-sdk/releases\"\u003elaunchdarkly-server-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.18.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.18.0...9.18.1\"\u003e9.18.1\u003c/a\u003e (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReuse an in-flight big segment status poll instead of always querying twice (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/66013b520f448cf6cda3d6377cde93d8bb31b19c\"\u003e66013b5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis PR was generated with \u003ca href=\"https://github.com/googleapis/release-please\"\u003eRelease Please\u003c/a\u003e. See \u003ca href=\"https://github.com/googleapis/release-please#release-please\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev9.18.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.17.0...9.18.0\"\u003e9.18.0\u003c/a\u003e (2026-09-25)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd retry state for RETRY-spec backoff (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/522\"\u003e#522\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e734558d52dbd3eeeb9d378f283dd3d3f5cee611\"\u003ee734558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrive repeating tasks from a delay source (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry indefinitely after a data source failure instead of stopping permanently in FDv1 (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewarn that payload filtering has no effect with FDv2 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/518\"\u003e#518\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/296311f9ea73f09e96bd8dfb7410405e08794776\"\u003e296311f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn when the SDK is used in a forked process without postfork (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/75402e90f38a154466ab8b2bdd53a819720e0001\"\u003e75402e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd async modules to the readthedocs API reference (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/513\"\u003e#513\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/f40d3b22c808e829e9deb4ac5feab05db85674e8\"\u003ef40d3b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLog the cached-data evaluation warning only once per client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/520\"\u003e#520\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/59ce998668b6907fb0663699127b0b9895cbdcef\"\u003e59ce998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead all items when a collection is empty (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/108714738b1ef0b955321b502bfa65dbced5eaee\"\u003e1087147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRepeating task wait duration is no longer reduced by a slow callback duration. (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport a distinct User-Agent for the async client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/516\"\u003e#516\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/514c46780cf5aa593c1f791bd1335c7048f6d235\"\u003e514c467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn and use the documented default for an invalid poll interval or initial reconnect delay (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis PR was generated with \u003ca href=\"https://github.com/googleapis/release-please\"\u003eRelease Please\u003c/a\u003e. See \u003ca href=\"https://github.com/googleapis/release-please#release-please\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/launchdarkly/python-server-sdk/blob/main/CHANGELOG.md\"\u003elaunchdarkly-server-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.18.0...9.18.1\"\u003e9.18.1\u003c/a\u003e (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReuse an in-flight big segment status poll instead of always querying twice (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/66013b520f448cf6cda3d6377cde93d8bb31b19c\"\u003e66013b5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.17.0...9.18.0\"\u003e9.18.0\u003c/a\u003e (2026-09-25)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd retry state for RETRY-spec backoff (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/522\"\u003e#522\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e734558d52dbd3eeeb9d378f283dd3d3f5cee611\"\u003ee734558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrive repeating tasks from a delay source (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry indefinitely after a data source failure instead of stopping permanently in FDv1 (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn that payload filtering has no effect with FDv2 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/518\"\u003e#518\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/296311f9ea73f09e96bd8dfb7410405e08794776\"\u003e296311f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn when the SDK is used in a forked process without postfork (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/75402e90f38a154466ab8b2bdd53a819720e0001\"\u003e75402e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd async modules to the readthedocs API reference (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/513\"\u003e#513\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/f40d3b22c808e829e9deb4ac5feab05db85674e8\"\u003ef40d3b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLog the cached-data evaluation warning only once per client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/520\"\u003e#520\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/59ce998668b6907fb0663699127b0b9895cbdcef\"\u003e59ce998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead all items when a collection is empty (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/108714738b1ef0b955321b502bfa65dbced5eaee\"\u003e1087147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRepeating task wait duration is no longer reduced by a slow callback duration. (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport a distinct User-Agent for the async client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/516\"\u003e#516\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/514c46780cf5aa593c1f791bd1335c7048f6d235\"\u003e514c467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn and use the documented default for an invalid poll interval or initial reconnect delay (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/ce2a9010a39488d6c2a88bccb103fd6e3df26ba8\"\u003e\u003ccode\u003ece2a901\u003c/code\u003e\u003c/a\u003e chore(main): release 9.18.1 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/66013b520f448cf6cda3d6377cde93d8bb31b19c\"\u003e\u003ccode\u003e66013b5\u003c/code\u003e\u003c/a\u003e fix: Reuse an in-flight big segment status poll instead of always querying tw...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/4d75813d80921b3dcdb6e2afe7b057e3658f5a60\"\u003e\u003ccode\u003e4d75813\u003c/code\u003e\u003c/a\u003e chore: Assert readiness directly instead of waiting on a timeout (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/6daade3c22d9a7358bde8d59f4a0a1acc758ca32\"\u003e\u003ccode\u003e6daade3\u003c/code\u003e\u003c/a\u003e chore(main): release 9.18.0 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003e\u003ccode\u003ee17e173\u003c/code\u003e\u003c/a\u003e feat: Retry indefinitely after a data source failure instead of stopping perm...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/108714738b1ef0b955321b502bfa65dbced5eaee\"\u003e\u003ccode\u003e1087147\u003c/code\u003e\u003c/a\u003e fix: Read all items when a collection is empty (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/5d1213ee6e89c9099b42397814daad5984bcfc48\"\u003e\u003ccode\u003e5d1213e\u003c/code\u003e\u003c/a\u003e chore: Restrict the sdist to an allowlist and verify it in CI (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/75402e90f38a154466ab8b2bdd53a819720e0001\"\u003e\u003ccode\u003e75402e9\u003c/code\u003e\u003c/a\u003e feat: Warn when the SDK is used in a forked process without postfork (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/512\"\u003e#512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e734558d52dbd3eeeb9d378f283dd3d3f5cee611\"\u003e\u003ccode\u003ee734558\u003c/code\u003e\u003c/a\u003e feat: Add retry state for RETRY-spec backoff (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e\u003ccode\u003e9abe8cb\u003c/code\u003e\u003c/a\u003e fix: Drive repeating tasks from a delay source (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.17.0...9.18.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ollama` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ollama/ollama-python/releases\"\u003eollama's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eclient: widen sync generate think type to accept string levels by \u003ca href=\"https://github.com/anxkhn\"\u003e\u003ccode\u003e@​anxkhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/697\"\u003eollama/ollama-python#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle multiple tool calls in tools examples by \u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/634\"\u003eollama/ollama-python#634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etypes: make Image path extension check case-insensitive by \u003ca href=\"https://github.com/anxkhn\"\u003e\u003ccode\u003e@​anxkhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/696\"\u003eollama/ollama-python#696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereadme: update to use gemma 4 and format by \u003ca href=\"https://github.com/ParthSareen\"\u003e\u003ccode\u003e@​ParthSareen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/740\"\u003eollama/ollama-python#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add System One API support by \u003ca href=\"https://github.com/ParthSareen\"\u003e\u003ccode\u003e@​ParthSareen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/749\"\u003eollama/ollama-python#749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate pylint.yml by \u003ca href=\"https://github.com/eoinmcgee1993\"\u003e\u003ccode\u003e@​eoinmcgee1993\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/731\"\u003eollama/ollama-python#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etypes/client: relax think type to support model-defined thinking levels by \u003ca href=\"https://github.com/arrase\"\u003e\u003ccode\u003e@​arrase\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/744\"\u003eollama/ollama-python#744\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anxkhn\"\u003e\u003ccode\u003e@​anxkhn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/697\"\u003eollama/ollama-python#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/634\"\u003eollama/ollama-python#634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eoinmcgee1993\"\u003e\u003ccode\u003e@​eoinmcgee1993\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/731\"\u003eollama/ollama-python#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrase\"\u003e\u003ccode\u003e@​arrase\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/744\"\u003eollama/ollama-python#744\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ollama/ollama-python/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/ollama/ollama-python/compare/v0.6.2...v0.6.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/8785556559ec1d045d27a1ba9d9cc7330c3d3cb1\"\u003e\u003ccode\u003e8785556\u003c/code\u003e\u003c/a\u003e types/client: relax think type to support model-defined thinking levels (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/744\"\u003e#744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/ed18cea18d6b569e09b26ed8495ce88530dae4b9\"\u003e\u003ccode\u003eed18cea\u003c/code\u003e\u003c/a\u003e feat: add System One API support (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/749\"\u003e#749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/b28b1e8a8cf5436d06805e5bb211904e9ff53ef9\"\u003e\u003ccode\u003eb28b1e8\u003c/code\u003e\u003c/a\u003e readme: update to use gemma 4 and format (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/740\"\u003e#740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/fa8509936be08809bd15ca90a371165eb9abeb50\"\u003e\u003ccode\u003efa85099\u003c/code\u003e\u003c/a\u003e types: make Image path extension check case-insensitive (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/696\"\u003e#696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/25b93290d8cd07b0d00732641f812ee34fd4c989\"\u003e\u003ccode\u003e25b9329\u003c/code\u003e\u003c/a\u003e fix: handle multiple tool calls in tools examples (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/3c5a26a0c5ca926db206aeff3c55d02162fb8d46\"\u003e\u003ccode\u003e3c5a26a\u003c/code\u003e\u003c/a\u003e client: widen sync generate think type to accept string levels (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/697\"\u003e#697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ollama/ollama-python/compare/v0.6.2...v0.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.12.0 to 3.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0 - 2026-08-17\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/bd00937c5c46ab20eb5d7fe1cfc034b906c4578f\"\u003e\u003ccode\u003ebd00937\u003c/code\u003e\u003c/a\u003e 3.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/de1fd5a0bf3497c22267fe21ce9038fee4d9dacc\"\u003e\u003ccode\u003ede1fd5a\u003c/code\u003e\u003c/a\u003e frozendict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/f110dbe19873fe532b9dffa6c022d2769ed95479\"\u003e\u003ccode\u003ef110dbe\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ijl/orjson/compare/3.12.0...3.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pywebpush` from 2.3.0 to 2.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/web-push-libs/pywebpush/blob/main/CHANGELOG.md\"\u003epywebpush's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.5.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd common \u003ccode\u003estatus_code\u003c/code\u003e and \u003ccode\u003eretry_after\u003c/code\u003e accessors to \u003ccode\u003eWebPushException\u003c/code\u003e\nfor synchronous and asynchronous responses.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/web-push-libs/pywebpush/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.3 to 1.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edotenv get\u003c/code\u003e no longer exits with code 1 for empty string values (\u003ccode\u003eKEY=\u003c/code\u003e) by [\u003ca href=\"https://github.com/ShamikOfficial\"\u003e\u003ccode\u003e@​ShamikOfficial\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAn unquoted empty value followed by an inline comment (e.g. \u003ccode\u003eKEY= # comment\u003c/code\u003e) is now parsed as an empty string instead of the comment text by [\u003ca href=\"https://github.com/Noethix55555\"\u003e\u003ccode\u003e@​Noethix55555\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run --no-override\u003c/code\u003e now expands variable references with the same precedence as \u003ccode\u003eload_dotenv(override=False)\u003c/code\u003e, so a value like \u003ccode\u003e${BASE}/suffix\u003c/code\u003e uses the existing \u003ccode\u003eBASE\u003c/code\u003e from the environment instead of the one from the \u003ccode\u003e.env\u003c/code\u003e file by [\u003ca href=\"https://github.com/ROTl24\"\u003e\u003ccode\u003e@​ROTl24\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.4] - 2026-10-01\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edotenv get\u003c/code\u003e no longer exits with code 1 for empty string values (\u003ccode\u003eKEY=\u003c/code\u003e) by [\u003ca href=\"https://github.com/ShamikOfficial\"\u003e\u003ccode\u003e@​ShamikOfficial\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAn unquoted empty value followed by an inline comment (e.g. \u003ccode\u003eKEY= # comment\u003c/code\u003e) is now parsed as an empty string instead of the comment text by [\u003ca href=\"https://github.com/Noethix55555\"\u003e\u003ccode\u003e@​Noethix55555\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run --no-override\u003c/code\u003e now expands variable references with the same precedence as \u003ccode\u003eload_dotenv(override=False)\u003c/code\u003e, so a value like \u003ccode\u003e${BASE}/suffix\u003c/code\u003e uses the existing \u003ccode\u003eBASE\u003c/code\u003e from the environment instead of the one from the \u003ccode\u003e.env\u003c/code\u003e file by [\u003ca href=\"https://github.com/ROTl24\"\u003e\u003ccode\u003e@​ROTl24\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/a565c2cc41599c48eabc6b7b7f5b826d43c5a6d7\"\u003e\u003ccode\u003ea565c2c\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.3 → 1.2.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a7abd00261e51baba958e15f443c66165042ea2\"\u003e\u003ccode\u003e4a7abd0\u003c/code\u003e\u003c/a\u003e docs: add 1.2.4 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f215c0274dc4c310e5ca5feb4c6bddade25ece21\"\u003e\u003ccode\u003ef215c02\u003c/code\u003e\u003c/a\u003e fix: dotenv get exits 0 for empty string values (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/58f2d7c112235b347040bb5cb579d4ebc0a0ad91\"\u003e\u003ccode\u003e58f2d7c\u003c/code\u003e\u003c/a\u003e test: make test_run_with_command_flags portable and meaningful (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/709\"\u003e#709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e0310e5bb3f2b701b11bbc007ca0c82c1bd56f38\"\u003e\u003ccode\u003ee0310e5\u003c/code\u003e\u003c/a\u003e fix: honor --no-override when expanding variables in dotenv run (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/a00cb2eed0704cd6d2071b2004c37e95ccc86ee5\"\u003e\u003ccode\u003ea00cb2e\u003c/code\u003e\u003c/a\u003e docs: add CHANGELOG entry for \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e (fix \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/600\"\u003e#600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f5485a61eefa5e686d6d5bdc7aa9ad6b104b1e92\"\u003e\u003ccode\u003ef5485a6\u003c/code\u003e\u003c/a\u003e fix: parse empty unquoted value with inline comment as empty string\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.3...v1.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.9.10 to 2026.9.29\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.9.29\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eUpdated to Unicode 18.0.0.\n\u003cp\u003eSwitched to using stdbool.h and stdint.h.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.9.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 619: `Match.expand()` segfaults after `detach_string()` when the template references a group\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#615](https://github.com/mrabarnett/mrab-regex/issues/615): Fix Python API error propagation in match helpers\n\u003cp\u003ePR \u003ca href=\"https://redirect.github.com/mrabarnett/mrab-regex/issues/616\"\u003e#616\u003c/a\u003e: Preserve Python Exceptions in Input Decoding and String Detachment\u003c/p\u003e\n\u003cp\u003ePR \u003ca href=\"https://redirect.github.com/mrabarnett/mrab-regex/issues/617\"\u003e#617\u003c/a\u003e: Prevent Invalid Pointer Use and Exception State Corruption in Byte String Joining\u003c/p\u003e\n\u003cp\u003ePR \u003ca href=\"https://redirect.github.com/mrabarnett/mrab-regex/issues/618\"\u003e#618\u003c/a\u003e: Propagate Allocation and Internal Errors During Pattern Compilation and Scanner Execution\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.9.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNew version of cibuildwheel no longer supports building for free-threaded Python 3.13.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.2\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNew version of cibuildwheel no longer needs nor supports cpython-freethreading option.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.1\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eUpdated cibuildwheel.\nSupport Python 3.15.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.8.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.8.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 611: Heap out-of-bounds write at compile time\nGit issue 612: count_one() size underflow through the stale required-string cache\nGit issue 613: (*SKIP) inside an atomic group, plus an equality-only scan stop\nGit issue 614: build_GROUP() does not propagate the match direction\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.8.12\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/0e8cb0596ba6572c66e5d153a1d7c901b381e15e\"\u003e\u003ccode\u003e0e8cb05\u003c/code\u003e\u003c/a\u003e Updated to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/85e568c0e0be620b4ebe50c98ea92415f5995ffc\"\u003e\u003ccode\u003e85e568c\u003c/code\u003e\u003c/a\u003e Git issue 619: \u003ccode\u003eMatch.expand()\u003c/code\u003e segfaults after \u003ccode\u003edetach_string()\u003c/code\u003e when the te...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.9.10...2026.9.29\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.69.1 to 2.71.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.71.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eNew integration:\u003c/strong\u003e TypeSafe (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/4733\"\u003e#4733\u003c/a\u003e) by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAdd the TypeSafe integration to your \u003ccode\u003esentry_sdk.init\u003c/code\u003e call:\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.typesafe import TypeSafeIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn=\u0026quot;...\u0026quot;,\u003cbr /\u003e\ntraces_sample_rate=1.0,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nTypeSafeIntegration(),\u003cbr /\u003e\n]\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch4\u003eTypesafe\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.output.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7720\"\u003e#7720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet token usage attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7719\"\u003e#7719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.input.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7718\"\u003e#7718\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.response.model\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7717\"\u003e#7717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd integration with \u003ccode\u003esystem_one()\u003c/code\u003e patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7716\"\u003e#7716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep event if processor raises by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7701\"\u003e#7701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIsolate user callbacks, emit client reports by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7692\"\u003e#7692\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003edata_collection\u003c/code\u003e in changelog by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7565\"\u003e#7565\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(aws-lambda) Add \u003ccode\u003e.gitignore\u003c/code\u003e to lambda handlers by \u003ca href=\"https://github.com/pabloDeputter\"\u003e\u003ccode\u003e@​pabloDeputter\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7638\"\u003e#7638\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Set \u003ccode\u003eLITELLM_LOCAL_MODEL_COST_MAP=true\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7630\"\u003e#7630\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Adjust to \u003ccode\u003eOTLPSpanExporter._headers\u003c/code\u003e removal by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7722\"\u003e#7722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse top-level flush API in tests by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7725\"\u003e#7725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnsample on sampler exception by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7723\"\u003e#7723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003esentry_init\u003c/code\u003e fixture by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7577\"\u003e#7577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.70.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew integration:\u003c/strong\u003e Mistral AI (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/4733\"\u003e#4733\u003c/a\u003e) by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.71.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eNew integration:\u003c/strong\u003e TypeSafe (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/4733\"\u003e#4733\u003c/a\u003e) by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAdd the TypeSafe integration to your \u003ccode\u003esentry_sdk.init\u003c/code\u003e call:\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.typesafe import TypeSafeIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn=\u0026quot;...\u0026quot;,\u003cbr /\u003e\ntraces_sample_rate=1.0,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nTypeSafeIntegration(),\u003cbr /\u003e\n]\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch4\u003eTypesafe\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.output.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7720\"\u003e#7720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet token usage attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7719\"\u003e#7719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.input.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7718\"\u003e#7718\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.response.model\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7717\"\u003e#7717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd integration with \u003ccode\u003esystem_one()\u003c/code\u003e patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7716\"\u003e#7716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep event if processor raises by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7701\"\u003e#7701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIsolate user callbacks, emit client reports by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7692\"\u003e#7692\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003edata_collection\u003c/code\u003e in changelog by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7565\"\u003e#7565\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(aws-lambda) Add \u003ccode\u003e.gitignore\u003c/code\u003e to lambda handlers by \u003ca href=\"https://github.com/pabloDeputter\"\u003e\u003ccode\u003e@​pabloDeputter\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7638\"\u003e#7638\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Set \u003ccode\u003eLITELLM_LOCAL_MODEL_COST_MAP=true\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7630\"\u003e#7630\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Adjust to \u003ccode\u003eOTLPSpanExporter._headers\u003c/code\u003e removal by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/...\n\n_Description has been truncated_","html_url":"https://github.com/Significant-Gravitas/AutoGPT/pull/15528","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Significant-Gravitas%2FAutoGPT/issues/15528","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15528/packages"},{"uuid":"5856735163","node_id":"PR_kwDORmZyN88AAAABIgCq6g","number":21,"state":"closed","title":"chore(deps): bump the python-minor group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-17T20:24:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T22:27:58.000Z","updated_at":"2026-10-17T20:24:11.000Z","time_to_close":251771,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor","update_count":4,"packages":[{"name":"uvicorn","old_version":"0.24.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.14.0","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"orjson","old_version":"3.11.6","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"sgp4","old_version":"2.25","new_version":"2.27","repository_url":"https://github.com/brandon-rhodes/python-sgp4"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 4 updates in the /backend directory: [uvicorn](https://github.com/Kludex/uvicorn), [pydantic](https://github.com/pydantic/pydantic), [orjson](https://github.com/ijl/orjson) and [sgp4](https://github.com/brandon-rhodes/python-sgp4).\n\nUpdates `uvicorn` from 0.24.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.24.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.14.0 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.11.6 to 3.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialization implementation substantially rewritten.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for Python 3.15. For Python 3.15 and later,\n\u003ccode\u003emanylinux_2_39\u003c/code\u003e (2024) is targeted instead of \u003ccode\u003emanylinux_2_17\u003c/code\u003e (2012).\u003c/li\u003e\n\u003cli\u003eNo longer publish PyPI wheels for ppc64le and s390x.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.9\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild now depends on Rust 1.95 or later instead of 1.89.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix building on Rust 1.95.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.8\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0 - 2026-08-17\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12.0 - 2026-08-14\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialization implementation substantially rewritten.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for Python 3.15. For Python 3.15 and later,\n\u003ccode\u003emanylinux_2_39\u003c/code\u003e (2024) is targeted instead of \u003ccode\u003emanylinux_2_17\u003c/code\u003e (2012).\u003c/li\u003e\n\u003cli\u003eNo longer publish PyPI wheels for ppc64le and s390x.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.9 - 2026-05-06\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild now depends on Rust 1.95 or later instead of 1.89.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix building on Rust 1.95.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.8 - 2026-03-31\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/bd00937c5c46ab20eb5d7fe1cfc034b906c4578f\"\u003e\u003ccode\u003ebd00937\u003c/code\u003e\u003c/a\u003e 3.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/de1fd5a0bf3497c22267fe21ce9038fee4d9dacc\"\u003e\u003ccode\u003ede1fd5a\u003c/code\u003e\u003c/a\u003e frozendict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/f110dbe19873fe532b9dffa6c022d2769ed95479\"\u003e\u003ccode\u003ef110dbe\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/6737895a1a4e3e26df0569a40147893a786f9a58\"\u003e\u003ccode\u003e6737895\u003c/code\u003e\u003c/a\u003e 3.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/c2a6e8ff7b898635fb68a85bd5a62df1edf61cfc\"\u003e\u003ccode\u003ec2a6e8f\u003c/code\u003e\u003c/a\u003e JsonWriter, iterators\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/6a2d7a7d66dc3c5698625a7b334c40db459e46ae\"\u003e\u003ccode\u003e6a2d7a7\u003c/code\u003e\u003c/a\u003e yyjson 1ea2fb0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/97bf170d9726e91c891f35eae4892801520b9dce\"\u003e\u003ccode\u003e97bf170\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/705515d77b28429d0b7c30c3d781abe52e8a1e5a\"\u003e\u003ccode\u003e705515d\u003c/code\u003e\u003c/a\u003e 3.11.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d19055d5bab432f98d53b71606a9c6c23fb21bf6\"\u003e\u003ccode\u003ed19055d\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/77e2d96c3febe099cde2447856fe2523d68c71b0\"\u003e\u003ccode\u003e77e2d96\u003c/code\u003e\u003c/a\u003e MSRV 1.95, remove compiler feature detection\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.6...3.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sgp4` from 2.25 to 2.27\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/6e7428df7acc48e8176828289a8c14486a114759\"\u003e\u003ccode\u003e6e7428d\u003c/code\u003e\u003c/a\u003e Actual 2.27: forgot to update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/66ab17c859f217f19374c0ad240d080fcba567ef\"\u003e\u003ccode\u003e66ab17c\u003c/code\u003e\u003c/a\u003e Declare version 2.27\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/50919194481f6e89a6bb26ec435bd2ac4674aa48\"\u003e\u003ccode\u003e5091919\u003c/code\u003e\u003c/a\u003e Reinstate doctests (they now live in \u003ccode\u003eREADME.rst\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/96cf168d5e253148cab46df2c5337058a49cc13f\"\u003e\u003ccode\u003e96cf168\u003c/code\u003e\u003c/a\u003e Pivot check_satrec(), check_satrec() off of docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/20a13b4022fce80b40084ab0001fa5453d6e85e6\"\u003e\u003ccode\u003e20a13b4\u003c/code\u003e\u003c/a\u003e Move README material out of \u003cstrong\u003einit\u003c/strong\u003e.py for \u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/165\"\u003e#165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/1556433a243945677f17575dcc18ae9dac806de1\"\u003e\u003ccode\u003e1556433\u003c/code\u003e\u003c/a\u003e Declare version 2.26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/89342d15b3f37b34faa12465416173df85b0a514\"\u003e\u003ccode\u003e89342d1\u003c/code\u003e\u003c/a\u003e CI: add musllinux to the build matrix (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/6843678f9dd5c75c5b0cf84c8844957ef09b7a3f\"\u003e\u003ccode\u003e6843678\u003c/code\u003e\u003c/a\u003e CI: upgrade out-of-date Github Actions (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/7805490ff98afa2021eb9eb20790b4c50fb68725\"\u003e\u003ccode\u003e7805490\u003c/code\u003e\u003c/a\u003e Move cibuildwheel's configuration to TOML (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/1492f7ecf6e94fbc3b9ea86f03acc2b25a03eca2\"\u003e\u003ccode\u003e1492f7e\u003c/code\u003e\u003c/a\u003e Declare Python 3 wheels abi3-compliant (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/compare/2.25...2.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/projectideamaterials1-dev/NSH/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectideamaterials1-dev%2FNSH/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"},{"uuid":"5854323007","node_id":"PR_kwDOUnyTTc8AAAABIeGfVA","number":11,"state":"closed","title":"chore(deps): bump the minor-and-patch group across 1 directory with 22 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-14T22:48:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T19:33:26.000Z","updated_at":"2026-10-14T22:48:59.000Z","time_to_close":11730,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-and-patch","update_count":22,"packages":[{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"faiss-cpu","old_version":"1.15.0","new_version":"1.15.1","repository_url":"https://github.com/facebookresearch/faiss"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastembed","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/qdrant/fastembed"},{"name":"fsspec","old_version":"2026.7.0","new_version":"2026.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"httpcore2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"httpx2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"llama-cpp-python","old_version":"0.3.19","new_version":"0.3.36","repository_url":"https://github.com/abetlen/llama-cpp-python"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"numpy","old_version":"2.5.3","new_version":"2.5.4","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.30.0","new_version":"1.31.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"protobuf","old_version":"7.36.1","new_version":"7.36.2"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pypdf","old_version":"6.18.1","new_version":"6.20.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"pytest-asyncio","old_version":"1.2.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"sse-starlette","old_version":"3.4.11","new_version":"3.5.0","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tokenizers","old_version":"0.23.2","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 22 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [faiss-cpu](https://github.com/facebookresearch/faiss) | `1.15.0` | `1.15.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [fastembed](https://github.com/qdrant/fastembed) | `0.8.0` | `0.9.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.7.0` | `2026.9.0` |\n| [httpcore2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [llama-cpp-python](https://github.com/abetlen/llama-cpp-python) | `0.3.19` | `0.3.36` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [numpy](https://github.com/numpy/numpy) | `2.5.3` | `2.5.4` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.30.0` | `1.31.0` |\n| [protobuf](https://developers.google.com/protocol-buffers/) | `7.36.1` | `7.36.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.18.1` | `6.20.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.2.0` | `1.4.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.11` | `3.5.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.23.2` | `0.23.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n\n\nUpdates `charset-normalizer` from 3.5.1 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.5.1...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faiss-cpu` from 1.15.0 to 1.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/releases\"\u003efaiss-cpu's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for the full list of changes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003efaiss-cpu's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.1] - 2026-09-15\u003c/h2\u003e\n\u003cp\u003eAdded\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548 Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e4fdbc9dc18adbfef3cd410a2446aa4c757320a8a Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb5a14632a6f2bfdc824c86d683b9d6e9205c2604 Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee6bd1d252caa5b9315a04390269d382845984ae2 Add AVX512 VPOPCNT dynamic dispatch level (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5531\"\u003e#5531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7f4cedda9c384de652c7bd5690db0f808d668216 Add staged RaBitQ storage to HNSW (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5526\"\u003e#5526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecfbf4ec5ff68d0bca4701d0b24b8a0736e110932 SVS: allow option to disable vector storing (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5525\"\u003e#5525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecda4f6e7133c629e502c2ea9bc51e0ef51847ab1 Expose \u003ccode\u003eIndexBinaryIVF.set_direct_map_type\u003c/code\u003e via the C API (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5451\"\u003e#5451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e256980cb6ea6610e4b0edf497a038086df8bbfce Add SVE low-dimensional nearest fast path and spherical SuperKMeans support (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5530\"\u003e#5530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3a716ead1a3c4562fe6e96d982d26789c58e19ed Add Windows ARM64 support to CI (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5544\"\u003e#5544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7059eaf7da7eddda62e71367e684d4bdedd7f94f Add AVX512 bitplane kernel for multi-bit RaBitQ inner product (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5522\"\u003e#5522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea424dcb809fd725c44dd976d9063febd4837d16a faiss HNSW: add opt-in deterministic lock-free graph build (faiss::hnsw_deterministic_build) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5486\"\u003e#5486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eda3191e754b49ca67b6503a9262e96ce5a3d8ed8 IDSelectorWithContext: extend context hook to IVFPQ/PQR, multibit RaBitQ, and Panorama scanners (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5491\"\u003e#5491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eedddbc998e858f16330f9b226dfd72f73d4d1d46 IDSelectorWithContext: scan-context hook for locality-aware selectors (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5490\"\u003e#5490\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3bb48643ab8ea9e50162b354d2463270acd6ed9c Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6bbb068ad8dab612b84304400846da1b14539085 Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3c7042f17a467c38d99f490ef39e4dfa615dc510 Let the binary Hamming paths reach the VPOPCNT kernels\u003c/li\u003e\n\u003cli\u003e9f993087b07e83f026248addb01dd99e99b15a3e Name the SIMD level masks after what they hold (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5600\"\u003e#5600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee2cf9e1ebf24c14b888fa69eee96713aa6d64b1a Accept ragged code sizes in faiss::hammings(), and fix the vectorization axis for wide codes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5520\"\u003e#5520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e545550f6a27031c2269881d97237fd6a5bef15df Use unittest assertions and f-strings in test_index_composite (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5571\"\u003e#5571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaf9eeffcf70d7795107c2b0511bdba507ac45339 Reserve cs vector capacity in hammings_knn_mc_impl to avoid reallocations (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5548\"\u003e#5548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e317a207bcacfcfa695d98289c3f4ea562b782837 ARM SVE optimization for L2 distance kernels adapted to new simd_impl structure (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5098\"\u003e#5098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2027d3b33144dbf19674b540ec0e31b2f842b1cc Make cuVS dispatch opt-in rather than build-implied (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5529\"\u003e#5529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea39e2606887bbacc6c8f54e783c4b42da00cf4b3 Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5521\"\u003e#5521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1f93154314afbef210f0ebebeab840da22f9ec7d Revert D114685755: Fold multi-GPU CAGRA build into train(), delete trainMultiGpu\u003c/li\u003e\n\u003cli\u003e6644dcfa5576221b1a4417fd766a8b2af71d869e Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5500\"\u003e#5500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e80a16564f86530dbf0bfaf96c2b71feffeb5093f Enable Faiss dynamic dispatch for OVIS and VeST fbpkgs (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5515\"\u003e#5515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2688c34f942c8462d97c8632c720a53653456270 Parallelize the k-means++ D^2 seeding update (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5457\"\u003e#5457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e76c67b7b736ca80c2b3ea29528434d6583adc88b Update default Panorama batch size to 1024 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3b50babc5914570576b09da043f64dfd7d62a075 Optimize RVV batch-4 distance kernels (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5469\"\u003e#5469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e7c3b55c01b8418dc044881625a260fceae9c712b Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efb2d57a3121c073828d2ed7d04ccf09d8bea771c Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efc13c81fb8b22f76e4c2c7bd2f027bd049b9a207 Stop aarch64 falling back to SIMDLevel::NONE in faiss dispatch (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5572\"\u003e#5572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e00928e3f7628b8288c17cfece5ee9600a8287f56 Fix ROCm CI: build in a dedicated conda env instead of the runner's broken base (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5545\"\u003e#5545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1e5780fbbfbe191f3ed3517f93ace8301239e9b2 Fix OOB read in \u003ccode\u003ePanorama::reconstruct\u003c/code\u003e via \u003ccode\u003eIndexPreTransform\u003c/code\u003e (T287094917) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5562\"\u003e#5562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2ed4c106e9fb9686e7727e5daf8ad6ad1e164109 Fix: Windows SIMD detection (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5497\"\u003e#5497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb4c66ba6031d1f659163e43430f8ce745b0dbe79 Fix reverse_index_factory/get_code_size round-trip for HNSW, IMI and IVFPQR (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5564\"\u003e#5564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ec0084f5cd2534236acda05cf7b8e0fc8062ddec3 Clamp EDEN unbiased L2 distances to be non-negative (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5569\"\u003e#5569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6457e941f5f4808303bb480679cb78df0df51934 Contain DirectoryArchiver entries within the extraction root (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5561\"\u003e#5561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eac60182fc009476c91a2788e639191d1f624157f RaBitQ: Fix zero residual sign convention (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5553\"\u003e#5553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1a0cfa64e015923d5009d8c7d917aa591e9eac9a Apply the deserialization byte limit to SVS IVF (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5568\"\u003e#5568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e718002f7cf269f3f3752dde04a4cc3f8eabb0050 Fix distance conversion in IndexBinaryFromFloat for non-L2 metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5549\"\u003e#5549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e02ea14372c9983f3eaa15698512180dc62ea234d Fix range_search_max_results to respect all similarity metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5533\"\u003e#5533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebd7087453e6d2262b6e6c76ab0cfa1e2dfeddebf fix(faiss): use is_similarity_metric for IndexShardsIVF merge (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5541\"\u003e#5541\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/75c755c5a1fc854756aaf3bd1131213aeb21d8d1\"\u003e\u003ccode\u003e75c755c\u003c/code\u003e\u003c/a\u003e Add missing CHANGELOG entry for \u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e in v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5651\"\u003e#5651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/d63faeaf5a9b5133c1a500d6c0cf9d934c075cf8\"\u003e\u003ccode\u003ed63faea\u003c/code\u003e\u003c/a\u003e Increment to next release, v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5645\"\u003e#5645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548\"\u003e\u003ccode\u003e3b3711c\u003c/code\u003e\u003c/a\u003e Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3bb48643ab8ea9e50162b354d2463270acd6ed9c\"\u003e\u003ccode\u003e3bb4864\u003c/code\u003e\u003c/a\u003e Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/7c3b55c01b8418dc044881625a260fceae9c712b\"\u003e\u003ccode\u003e7c3b55c\u003c/code\u003e\u003c/a\u003e Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/fb2d57a3121c073828d2ed7d04ccf09d8bea771c\"\u003e\u003ccode\u003efb2d57a\u003c/code\u003e\u003c/a\u003e Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/a74867cf56a73234ad5d957e40c35c9616d4d273\"\u003e\u003ccode\u003ea74867c\u003c/code\u003e\u003c/a\u003e faiss HNSW: delete the flag and the lock-based graph build (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5611\"\u003e#5611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/4fdbc9dc18adbfef3cd410a2446aa4c757320a8a\"\u003e\u003ccode\u003e4fdbc9d\u003c/code\u003e\u003c/a\u003e Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/b5a14632a6f2bfdc824c86d683b9d6e9205c2604\"\u003e\u003ccode\u003eb5a1463\u003c/code\u003e\u003c/a\u003e Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/6bbb068ad8dab612b84304400846da1b14539085\"\u003e\u003ccode\u003e6bbb068\u003c/code\u003e\u003c/a\u003e Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebookresearch/faiss/compare/v1.15.0...v1.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastembed` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/qdrant/fastembed/releases\"\u003efastembed's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - \u003ccode\u003etoken_count()\u003c/code\u003e loads only the tokenizer, not the ONNX model, when \u003ccode\u003elazy_load=True\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e - add \u003ccode\u003elightonai/LateOn\u003c/code\u003e and the multilingual \u003ccode\u003elightonai/mLateOn\u003c/code\u003e by \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/655\"\u003e#655\u003c/a\u003e - add \u003ccode\u003estemmer\u003c/code\u003e and \u003ccode\u003estopwords\u003c/code\u003e parameters to \u003ccode\u003eQdrant/bm25\u003c/code\u003e for languages without a Snowball stemmer, such as Polish by \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/702\"\u003e#702\u003c/a\u003e - add \u003ccode\u003eibm-granite/granite-embedding-small-english-r2\u003c/code\u003e by \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/743\"\u003e#743\u003c/a\u003e - add \u003ccode\u003eBAAI/bge-reranker-v2-m3\u003c/code\u003e and its int8 version \u003ccode\u003eBAAI/bge-reranker-v2-m3-int8\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/747\"\u003e#747\u003c/a\u003e - speed up MUVERA document encoding for large \u003ccode\u003ek_sim\u003c/code\u003e values by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/751\"\u003e#751\u003c/a\u003e - add \u003ccode\u003eQdrant/stella-en-400M-v5-doc-onnx\u003c/code\u003e for documents and the small query encoders \u003ccode\u003eQdrant/constella-zero\u003c/code\u003e and \u003ccode\u003eQdrant/constella-nano\u003c/code\u003e that search its embeddings by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/756\"\u003e#756\u003c/a\u003e - add \u003ccode\u003eoutput_name\u003c/code\u003e to \u003ccode\u003eTextEmbedding.add_custom_model()\u003c/code\u003e to choose which ONNX output a custom model uses by \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes 🔧\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - fix BM42 and miniCOIL failing, and ColBERT keeping punctuation vectors, with \u003ccode\u003elazy_load=True\u003c/code\u003e and \u003ccode\u003eparallel\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/642\"\u003e#642\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/726\"\u003e#726\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/727\"\u003e#727\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/728\"\u003e#728\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/729\"\u003e#729\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/730\"\u003e#730\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/732\"\u003e#732\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e - make model downloads more reliable: re-download corrupted cached files, retry on more network errors, time out on an unresponsive Hugging Face endpoint, and download built-in models from Hugging Face only (see Upgrade Notes) by \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/670\"\u003e#670\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/734\"\u003e#734\u003c/a\u003e - fix a hang when a \u003ccode\u003eparallel\u003c/code\u003e run is stopped early, for example with \u003ccode\u003ebreak\u003c/code\u003e by \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/721\"\u003e#721\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e for a \u003ccode\u003ebatch_size\u003c/code\u003e below 1 by \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/723\"\u003e#723\u003c/a\u003e - fix the licenses listed for \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e (\u003ccode\u003egemma\u003c/code\u003e) and the Unicom models (\u003ccode\u003emit\u003c/code\u003e) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/725\"\u003e#725\u003c/a\u003e - accept nearest-neighbor interpolation in Jina CLIP image preprocessing by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/731\"\u003e#731\u003c/a\u003e - match Jina's center crop in \u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e preprocessing, which was off by 1 px for some image sizes by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/733\"\u003e#733\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e when MUVERA encodes an empty multivector by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/746\"\u003e#746\u003c/a\u003e - fix center crop returning undersized images when it pads by an odd number of pixels by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/754\"\u003e#754\u003c/a\u003e - return \u003ccode\u003efloat32\u003c/code\u003e instead of \u003ccode\u003efloat64\u003c/code\u003e embeddings from mean-pooling text models, such as \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e (regression in 0.6.1) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/757\"\u003e#757\u003c/a\u003e - fix loading models with \u003ccode\u003e.onnx_data\u003c/code\u003e weights from a \u003ccode\u003ehuggingface_hub\u0026gt;=1.32\u003c/code\u003e cache with \u003ccode\u003eonnxruntime\u0026gt;=1.24\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/760\"\u003e#760\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/761\"\u003e#761\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/784\"\u003e#784\u003c/a\u003e - fix \u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e image embeddings in batches that mix aspect ratios, for portrait images, and for very thin images, and speed up its text queries (see Upgrade Notes) by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/768\"\u003e#768\u003c/a\u003e - return \u003ccode\u003eint64\u003c/code\u003e indices from \u003ccode\u003eSparseEmbedding.from_dict({})\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/769\"\u003e#769\u003c/a\u003e - fix a token ID overflow in \u003ccode\u003eQdrant/bm25\u003c/code\u003e query embeddings by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/770\"\u003e#770\u003c/a\u003e - respect \u003ccode\u003ecuda=False\u003c/code\u003e in \u003ccode\u003eparallel\u003c/code\u003e workers, which ran on the GPU when \u003ccode\u003eonnxruntime-gpu\u003c/code\u003e was installed (regression in 0.8.0) by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/771\"\u003e#771\u003c/a\u003e - respect \u003ccode\u003edo_resize=False\u003c/code\u003e in ConvNeXT image preprocessing by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/773\"\u003e#773\u003c/a\u003e - keep very small SPLADE weights by computing them with \u003ccode\u003elog1p\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/775\"\u003e#775\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/776\"\u003e#776\u003c/a\u003e - honor the truncation and padding side from the model's tokenizer config by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuilt-in models now download from Hugging Face only, without the Google Cloud Storage (GCS) fallback some of them had. The GCS buckets stay open, so older versions keep working, and custom models still support both \u003ccode\u003eurl\u003c/code\u003e and \u003ccode\u003ehf\u003c/code\u003e sources. GCS copies cached by older versions still load offline or when Hugging Face is unreachable, with a \u003ccode\u003eFutureWarning\u003c/code\u003e: load the model once online, then delete its \u003ccode\u003efast-\u0026lt;model name\u0026gt;\u003c/code\u003e dir.\u003c/li\u003e\n\u003cli\u003eWe removed a stray 128-token limit from the Hugging Face configs of \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e and \u003ccode\u003eQdrant/bm42-all-minilm-l6-v2-attentions\u003c/code\u003e (now 256 tokens), and \u003ccode\u003ethenlper/gte-large\u003c/code\u003e and \u003ccode\u003eprithivida/Splade_PP_en_v1\u003c/code\u003e (now 512). This applies to any fastembed version on a fresh download, and embeddings of texts over 128 tokens change. A cached model keeps the old limit until you delete it from the cache.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e now loads \u003ccode\u003emodel_v2.onnx\u003c/code\u003e and drops padding rows from its embeddings, so offline setups need to download it first. Re-embed images that were embedded in batches with images of other aspect ratios. The model needs \u003ccode\u003eonnxruntime\u0026gt;=1.19\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLateInteractionMultimodalEmbedding.embed_image\u003c/code\u003e now defaults to \u003ccode\u003ebatch_size=2\u003c/code\u003e instead of 16, which also applies to \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e image embeddings change for some image sizes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to everyone who contributed to this release \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.8.1\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/539499b855478bcb6a810ac89a047de24c3b1866\"\u003e\u003ccode\u003e539499b\u003c/code\u003e\u003c/a\u003e bump version to v0.9.0 (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/789\"\u003e#789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b2e7debc696a71f85ad379df050d0b34c683cf23\"\u003e\u003ccode\u003eb2e7deb\u003c/code\u003e\u003c/a\u003e chore: remove redundant comment (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/788\"\u003e#788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/3c267018ebdbf84924e089e3148aeaf477662bca\"\u003e\u003ccode\u003e3c26701\u003c/code\u003e\u003c/a\u003e fix: show progress bars when downloading new or corrupted model files (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/db785ee93077fce5da745dca921ff9c40863f18f\"\u003e\u003ccode\u003edb785ee\u003c/code\u003e\u003c/a\u003e fix: ColModernVBERT tile grids, mixed-size image batches and fast text querie...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/c0588acf95250d2497e5f5e83233ef343ea74842\"\u003e\u003ccode\u003ec0588ac\u003c/code\u003e\u003c/a\u003e new: create an issue when weekly ci fails (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/781\"\u003e#781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0abff4d6d8c73003697993d2ca3123b3db5b2da7\"\u003e\u003ccode\u003e0abff4d\u003c/code\u003e\u003c/a\u003e new: check wheel before publishing (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/783\"\u003e#783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b566dcb9052dff0878d2ee57c695dd2a89a92d52\"\u003e\u003ccode\u003eb566dcb\u003c/code\u003e\u003c/a\u003e fix: don't fail a download when an older revision is cached (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0db8d09e7c569c2e2f508ef04eabe5ca57309c84\"\u003e\u003ccode\u003e0db8d09\u003c/code\u003e\u003c/a\u003e docs: show full supported model names (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/637\"\u003e#637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/02563ea78aa41e59112b1e9c66352c14bd98040a\"\u003e\u003ccode\u003e02563ea\u003c/code\u003e\u003c/a\u003e feat: Add lightonai/LateOn model (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/6b1e1d2ac5783e639138b3529973cdca45902372\"\u003e\u003ccode\u003e6b1e1d2\u003c/code\u003e\u003c/a\u003e new: add weekly ci to test all models (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/767\"\u003e#767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/qdrant/fastembed/compare/v0.8.0...v0.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2026.7.0 to 2026.9.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/0f76baaae4a227b085b18e8469e6cc1792a95ade\"\u003e\u003ccode\u003e0f76baa\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2166\"\u003e#2166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/695f831c2a2c55b48b11045ea2f2b34d529eaa43\"\u003e\u003ccode\u003e695f831\u003c/code\u003e\u003c/a\u003e Add age-based cleanup for simplecache (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2118\"\u003e#2118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/42aa46875c50f43d2d258540981772b86da7a6fb\"\u003e\u003ccode\u003e42aa468\u003c/code\u003e\u003c/a\u003e Mirror \u003ccode\u003ereadinto\u003c/code\u003e from the pyarrow stream onto \u003ccode\u003eArrowFile\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2111\"\u003e#2111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/4a4e6ae778d9cbc8f036a0b7af9467d94d0acac6\"\u003e\u003ccode\u003e4a4e6ae\u003c/code\u003e\u003c/a\u003e Make the SFTP host key policy configurable (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2126\"\u003e#2126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/a0ce6dbecad9d42f19a2e1462cb61fec9b77da2e\"\u003e\u003ccode\u003ea0ce6db\u003c/code\u003e\u003c/a\u003e Normalize paths in AsyncFileSystemWrapper like the wrapped filesystem (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/c5fea6d8e8c140a0cacbe94fa573df5becbf192e\"\u003e\u003ccode\u003ec5fea6d\u003c/code\u003e\u003c/a\u003e Fix cat_ranges on whole-file caches after \u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2154\"\u003e#2154\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2163\"\u003e#2163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/9efb18b4939d01ac9b06a481bda8125f48dbc738\"\u003e\u003ccode\u003e9efb18b\u003c/code\u003e\u003c/a\u003e Patch HAS_CPYTHON_API where _fast_slice reads it (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2164\"\u003e#2164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/27bcd35c5487570da9f3a97fd66a3f4268ca0c87\"\u003e\u003ccode\u003e27bcd35\u003c/code\u003e\u003c/a\u003e feat(AdaptiveReadaheadCache): introducing a new cache-type adaptive (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2093\"\u003e#2093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/a681aca115b6687a1ea1fcfd4ac1f5f8c4cc03c5\"\u003e\u003ccode\u003ea681aca\u003c/code\u003e\u003c/a\u003e Ignore a leading slash in TarFileSystem paths (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2148\"\u003e#2148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/57c55f87d780856181653eca4d5cc14e22d8e5f9\"\u003e\u003ccode\u003e57c55f8\u003c/code\u003e\u003c/a\u003e Make names relative in DirFileSystem.walk(detail=True) (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2160\"\u003e#2160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fsspec/filesystem_spec/compare/2026.7.0...2026.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpcore2` from 2.13.0 to 2.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/httpx2/releases\"\u003ehttpcore2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.1\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003e📤 Accurate file upload lengths\u003c/h3\u003e\n\u003cp\u003ePassing a file as \u003ccode\u003econtent=\u003c/code\u003e now calculates \u003ccode\u003eContent-Length\u003c/code\u003e from its remaining bytes, respecting the current file position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🔐 Reliable proxy TLS and HTTP/2 negotiation\u003c/h3\u003e\n\u003cp\u003eTLS hostname overrides now apply inside HTTP proxy tunnels without affecting the proxy's own TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e). HTTP/2 is advertised first when enabled, and HTTP/1.1 is omitted when disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🧹 Clean WebSocket shutdown\u003c/h3\u003e\n\u003cp\u003eThe sync WebSocket keepalive thread now exits cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003ehttpx2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCalculate \u003ccode\u003eContent-Length\u003c/code\u003e from the remaining bytes when a file is passed as \u003ccode\u003econtent=\u003c/code\u003e, respecting its current position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStop the sync WebSocket keepalive thread cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ehttpcore2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHonor the \u003ccode\u003esni_hostname\u003c/code\u003e extension for TLS inside HTTP proxy tunnels without applying it to the proxy's TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePrefer HTTP/2 during TLS protocol negotiation when enabled, and stop advertising HTTP/1.1 when it is disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/d91c9f4236523eb5978ca800944fa0078f17409f\"\u003e\u003ccode\u003ed91c9f4\u003c/code\u003e\u003c/a\u003e Correct the upcoming release version to 2.13.1 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/62a607d0772ba567917a26afb4e7a83f104a10d6\"\u003e\u003ccode\u003e62a607d\u003c/code\u003e\u003c/a\u003e Prepare version 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/392bbedf4a40e56fe0d7ab42f2bc97d69f646585\"\u003e\u003ccode\u003e392bbed\u003c/code\u003e\u003c/a\u003e Honor the TLS hostname override in proxy tunnels (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/df9783d23b9508b7e6a2277217dae496e3435462\"\u003e\u003ccode\u003edf9783d\u003c/code\u003e\u003c/a\u003e Respect file cursor positions when calculating raw content length (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/36c40098b2ad80172a39548f2a62a9d3fa8a5094\"\u003e\u003ccode\u003e36c4009\u003c/code\u003e\u003c/a\u003e httpcore2: prefer h2 for ALPN protocol if requesting HTTP/2 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/04d152ba8ef082f68feb21fe0e13e361215b942d\"\u003e\u003ccode\u003e04d152b\u003c/code\u003e\u003c/a\u003e docs: correct stale URL.query example (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx2` from 2.13.0 to 2.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/httpx2/releases\"\u003ehttpx2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.1\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003e📤 Accurate file upload lengths\u003c/h3\u003e\n\u003cp\u003ePassing a file as \u003ccode\u003econtent=\u003c/code\u003e now calculates \u003ccode\u003eContent-Length\u003c/code\u003e from its remaining bytes, respecting the current file position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🔐 Reliable proxy TLS and HTTP/2 negotiation\u003c/h3\u003e\n\u003cp\u003eTLS hostname overrides now apply inside HTTP proxy tunnels without affecting the proxy's own TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e). HTTP/2 is advertised first when enabled, and HTTP/1.1 is omitted when disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🧹 Clean WebSocket shutdown\u003c/h3\u003e\n\u003cp\u003eThe sync WebSocket keepalive thread now exits cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003ehttpx2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCalculate \u003ccode\u003eContent-Length\u003c/code\u003e from the remaining bytes when a file is passed as \u003ccode\u003econtent=\u003c/code\u003e, respecting its current position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStop the sync WebSocket keepalive thread cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ehttpcore2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHonor the \u003ccode\u003esni_hostname\u003c/code\u003e extension for TLS inside HTTP proxy tunnels without applying it to the proxy's TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePrefer HTTP/2 during TLS protocol negotiation when enabled, and stop advertising HTTP/1.1 when it is disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/httpx2/blob/main/src/httpx2/CHANGELOG.md\"\u003ehttpx2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.13.1 (September 23rd, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCalculate \u003ccode\u003eContent-Length\u003c/code\u003e from the remaining bytes when a file is passed as \u003ccode\u003econtent=\u003c/code\u003e, respecting its current position.\n(\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop the sync WebSocket keepalive thread cleanly when a ping races with connection shutdown.\n(\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/d91c9f4236523eb5978ca800944fa0078f17409f\"\u003e\u003ccode\u003ed91c9f4\u003c/code\u003e\u003c/a\u003e Correct the upcoming release version to 2.13.1 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/62a607d0772ba567917a26afb4e7a83f104a10d6\"\u003e\u003ccode\u003e62a607d\u003c/code\u003e\u003c/a\u003e Prepare version 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/df9783d23b9508b7e6a2277217dae496e3435462\"\u003e\u003ccode\u003edf9783d\u003c/code\u003e\u003c/a\u003e Respect file cursor positions when calculating raw content length (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/04d152ba8ef082f68feb21fe0e13e361215b942d\"\u003e\u003ccode\u003e04d152b\u003c/code\u003e\u003c/a\u003e docs: correct stale URL.query example (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.19 to 3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.20 (2026-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d55e65e1a3b1ede7f556bc202738066f5597e249\"\u003e\u003ccode\u003ed55e65e\u003c/code\u003e\u003c/a\u003e Release 3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0c0824a928e50048e59d4ce55fe760dba30528bc\"\u003e\u003ccode\u003e0c0824a\u003c/code\u003e\u003c/a\u003e Pre-release 3.20rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bd7c316a08761c79ba557b5b9e6a3da24d71fa88\"\u003e\u003ccode\u003ebd7c316\u003c/code\u003e\u003c/a\u003e Note Python 3.15 support in the 3.20 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b6cce8523eae3442aba976f01607b1cdf797c6ff\"\u003e\u003ccode\u003eb6cce85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/276\"\u003e#276\u003c/a\u003e from kjd/unicode-18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/9a4bc59e9d5ab89e7916fc0a50650cb55e3faf26\"\u003e\u003ccode\u003e9a4bc59\u003c/code\u003e\u003c/a\u003e Update to Unicode 18.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/dfab5a06affddcc7781a7bbab1cac1bb7d3b4e05\"\u003e\u003ccode\u003edfab5a0\u003c/code\u003e\u003c/a\u003e Merge branch 'python-3.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/417c35496ccbffad4b0a434ac9b563ee6f8fa0a9\"\u003e\u003ccode\u003e417c354\u003c/code\u003e\u003c/a\u003e Read the latest Unicode version from the DerivedAge.txt header instead of the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cd1739200f3bf07871372bcb31c271de136eaccf\"\u003e\u003ccode\u003ecd17392\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/274\"\u003e#274\u003c/a\u003e from kjd/fix-decode-length-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5796d79d44c76a54f03e8938dd22edaa1221c27\"\u003e\u003ccode\u003ec5796d7\u003c/code\u003e\u003c/a\u003e Skip the decode round-trip check for domains past encode's length limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ee690bf133e874351103b9fe838fdda2a7a09f\"\u003e\u003ccode\u003ed6ee690\u003c/code\u003e\u003c/a\u003e Update to Python 3.15 release candidate in CI and add trove classifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.19...v3.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `iniconfig` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.1\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParsing values with many continuation lines is now linear instead of quadratic in time (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/78\"\u003e#78\u003c/a\u003e, regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/77\"\u003e#77\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA leading UTF-8 BOM is now stripped when reading INI files. Files saved by Windows editors used to fail with \u003ccode\u003eParseError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e, thanks \u003ca href=\"https://github.com/Pitchfork-and-Torch\"\u003e\u003ccode\u003e@​Pitchfork-and-Torch\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003einiconfig._parse.ParsedLine.value\u003c/code\u003e is now a list of lines. This is private API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe README example now uses \u003ccode\u003eIniConfig.parse()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/79\"\u003e#79\u003c/a\u003e, thanks \u003ca href=\"https://github.com/MbappeWU\"\u003e\u003ccode\u003e@​MbappeWU\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed the issue tracker link (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/74\"\u003e#74\u003c/a\u003e, thanks \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull diff:\u003c/strong\u003e \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/71\"\u003epytest-dev/iniconfig#71\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/72\"\u003epytest-dev/iniconfig#72\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix link to issues by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/74\"\u003epytest-dev/iniconfig#74\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eparse_lines: keep values as list of lines, join once by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/78\"\u003epytest-dev/iniconfig#78\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/73\"\u003epytest-dev/iniconfig#73\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: expect sorted \u003cstrong\u003eall\u003c/strong\u003e after ruff autofix by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/80\"\u003epytest-dev/iniconfig#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: use parse API in the README example by \u003ca href=\"https://github.com/MbappeWU\"\u003e\u003ccode\u003e@​MbappeWU\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/79\"\u003epytest-dev/iniconfig#79\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip leading UTF-8 BOM when reading INI files by \u003ca href=\"https://github.com/Pitchfork-and-Torch\"\u003e\u003ccode\u003e@​Pitchfork-and-Torch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/76\"\u003epytest-dev/iniconfig#76\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echangelog: add BOM stripping (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e) to 2.3.1 by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/81\"\u003epytest-dev/iniconfig#81\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/74\"\u003epytest-dev/iniconfig#74\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MbappeWU\"\u003e\u003ccode\u003e@​MbappeWU\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/79\"\u003epytest-dev/iniconfig#79\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pitchfork-and-Torch\"\u003e\u003ccode\u003e@​Pitchfork-and-Torch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/76\"\u003epytest-dev/iniconfig#76\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix quadratic parse time for values with many continuation lines (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/78\"\u003e#78\u003c/a\u003e, regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/77\"\u003e#77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003estrip a leading UTF-8 BOM when reading INI files, which previously raised \u003ccode\u003eParseError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einternal: \u003ccode\u003einiconfig._parse.ParsedLine.value\u003c/code\u003e is now a list of lines\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/316fbfaf2752d89326e1e75b45cd070f5b5ace9a\"\u003e\u003ccode\u003e316fbfa\u003c/code\u003e\u003c/a\u003e changelog: add BOM stripping (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e) to 2.3.1 (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/81\"\u003e#81\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/d2dcb7289291e7e7019c183659814d42f7264b2d\"\u003e\u003ccode\u003ed2dcb72\u003c/code\u003e\u003c/a\u003e Strip leading UTF-8 BOM when reading INI files (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/40d8c03a1553953350d787e45f1cb768e2c14e6a\"\u003e\u003ccode\u003e40d8c03\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/79\"\u003e#79\u003c/a\u003e from MbappeWU/codex/docs-parse-inline-comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/48359c3a7c2c8648a134ea8469e802b5aa8d5030\"\u003e\u003ccode\u003e48359c3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/80\"\u003e#80\u003c/a\u003e from pytest-dev/claude/fix-iniconfig-test-eukh2n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/b153213a011fa92f4370c83cef614cf73c987f57\"\u003e\u003ccode\u003eb153213\u003c/code\u003e\u003c/a\u003e test: expect sorted \u003cstrong\u003eall\u003c/strong\u003e after ruff RUF022 autofix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/4fddfabc850afee28178931c62535ba1c2b30c72\"\u003e\u003ccode\u003e4fddfab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/73\"\u003e#73\u003c/a\u003e from pytest-dev/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/15852c2d1f9178ff960bf6c39a6f0f1495f1009e\"\u003e\u003ccode\u003e15852c2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/2e68639c3f41ea5b693f89807172cf304c94fb9e\"\u003e\u003ccode\u003e2e68639\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/23c9e088a909f16d0d8dc03b5090c66964c428b0\"\u003e\u003ccode\u003e23c9e08\u003c/code\u003e\u003c/a\u003e docs: use parse API in the README example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e038536fbee6b5e76b180fce6694fd54661ced12\"\u003e\u003ccode\u003ee038536\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/78\"\u003e#78\u003c/a\u003e from RonnyPfannschmidt/claude/dazzling-einstein-h8zq7m\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-cpp-python` from 0.3.19 to 0.3.36\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/abetlen/llama-cpp-python/blob/main/CHANGELOG.md\"\u003ellama-cpp-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.36]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@0c1e57098\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.35]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@4df29be4f\u003c/li\u003e\n\u003cli\u003efix(example): retain recurrent state for server MTP rollback\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@adb55e514\u003c/li\u003e\n\u003cli\u003efix(server): show falsey defaults in CLI help by \u003ca href=\"https://github.com/cupkk\"\u003e\u003ccode\u003e@​cupkk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2355\"\u003e#2355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: release multimodal contexts when closing Llama by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2343\"\u003e#2343\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.34]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3546c794\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.33]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@78d2f5246\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.32]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): support chained NextN heads for server MTP drafting\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@b3fed31b9\u003c/li\u003e\n\u003cli\u003efix: preserve recurrent/hybrid model state when the full prompt is already cached by \u003ca href=\"https://github.com/allthatido\"\u003e\u003ccode\u003e@​allthatido\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2306\"\u003e#2306\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.31]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@f449e0553\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.30]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3a74b299\u003c/li\u003e\n\u003cli\u003efeat: add Pyodide wheel support by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2309\"\u003e#2309\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.29]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): use MTMD batch encoding by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues...\n\n_Description has been truncated_","html_url":"https://github.com/CJX0712/worldai/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJX0712%2Fworldai/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"5854082031","node_id":"PR_kwDOUoBFHc8AAAABId6BWw","number":8,"state":"closed","title":"chore: bump the minor-and-patch group across 1 directory with 32 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":true,"comments_count":2,"pull_request":true,"closed_at":"2026-10-15T15:12:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T19:16:27.000Z","updated_at":"2026-10-15T15:12:51.000Z","time_to_close":71780,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"minor-and-patch","update_count":32,"packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"faiss-cpu","old_version":"1.15.0","new_version":"1.15.1","repository_url":"https://github.com/facebookresearch/faiss"},{"name":"fastembed","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/qdrant/fastembed"},{"name":"llama-cpp-python","old_version":"0.3.19","new_version":"0.3.36","repository_url":"https://github.com/abetlen/llama-cpp-python"},{"name":"pypdf","old_version":"6.18.1","new_version":"6.20.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"sse-starlette","old_version":"3.4.11","new_version":"3.5.0","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"pyjwt","old_version":"2.14.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"fsspec","old_version":"2026.7.0","new_version":"2026.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"hf-xet","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"httpcore2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"httpx2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"mcp-types","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"mcp","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"mmh3","old_version":"5.3.0","new_version":"5.3.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"opentelemetry-api","old_version":"1.44.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"protobuf","old_version":"7.36.1","new_version":"7.36.2"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-asyncio","old_version":"1.2.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"python-dotenv","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"ruff","old_version":"0.16.8","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tokenizers","old_version":"0.23.2","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"watchfiles","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 32 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [faiss-cpu](https://github.com/facebookresearch/faiss) | `1.15.0` | `1.15.1` |\n| [fastembed](https://github.com/qdrant/fastembed) | `0.8.0` | `0.9.0` |\n| [llama-cpp-python](https://github.com/abetlen/llama-cpp-python) | `0.3.19` | `0.3.36` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.18.1` | `6.20.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.11` | `3.5.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.14.0` | `2.15.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.7.0` | `2026.9.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.6.0` | `1.7.0` |\n| [httpcore2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [mcp-types](https://github.com/modelcontextprotocol/python-sdk) | `2.2.0` | `2.3.0` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `2.2.0` | `2.3.0` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.3.0` | `5.3.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.44.0` | `1.45.1` |\n| [protobuf](https://developers.google.com/protocol-buffers/) | `7.36.1` | `7.36.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.2.0` | `1.4.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3` | `1.2.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.8` | `0.17.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.23.2` | `0.23.3` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.2.0` | `1.3.0` |\n\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faiss-cpu` from 1.15.0 to 1.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/releases\"\u003efaiss-cpu's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for the full list of changes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003efaiss-cpu's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.1] - 2026-09-15\u003c/h2\u003e\n\u003cp\u003eAdded\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548 Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e4fdbc9dc18adbfef3cd410a2446aa4c757320a8a Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb5a14632a6f2bfdc824c86d683b9d6e9205c2604 Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee6bd1d252caa5b9315a04390269d382845984ae2 Add AVX512 VPOPCNT dynamic dispatch level (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5531\"\u003e#5531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7f4cedda9c384de652c7bd5690db0f808d668216 Add staged RaBitQ storage to HNSW (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5526\"\u003e#5526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecfbf4ec5ff68d0bca4701d0b24b8a0736e110932 SVS: allow option to disable vector storing (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5525\"\u003e#5525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecda4f6e7133c629e502c2ea9bc51e0ef51847ab1 Expose \u003ccode\u003eIndexBinaryIVF.set_direct_map_type\u003c/code\u003e via the C API (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5451\"\u003e#5451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e256980cb6ea6610e4b0edf497a038086df8bbfce Add SVE low-dimensional nearest fast path and spherical SuperKMeans support (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5530\"\u003e#5530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3a716ead1a3c4562fe6e96d982d26789c58e19ed Add Windows ARM64 support to CI (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5544\"\u003e#5544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7059eaf7da7eddda62e71367e684d4bdedd7f94f Add AVX512 bitplane kernel for multi-bit RaBitQ inner product (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5522\"\u003e#5522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea424dcb809fd725c44dd976d9063febd4837d16a faiss HNSW: add opt-in deterministic lock-free graph build (faiss::hnsw_deterministic_build) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5486\"\u003e#5486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eda3191e754b49ca67b6503a9262e96ce5a3d8ed8 IDSelectorWithContext: extend context hook to IVFPQ/PQR, multibit RaBitQ, and Panorama scanners (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5491\"\u003e#5491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eedddbc998e858f16330f9b226dfd72f73d4d1d46 IDSelectorWithContext: scan-context hook for locality-aware selectors (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5490\"\u003e#5490\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3bb48643ab8ea9e50162b354d2463270acd6ed9c Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6bbb068ad8dab612b84304400846da1b14539085 Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3c7042f17a467c38d99f490ef39e4dfa615dc510 Let the binary Hamming paths reach the VPOPCNT kernels\u003c/li\u003e\n\u003cli\u003e9f993087b07e83f026248addb01dd99e99b15a3e Name the SIMD level masks after what they hold (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5600\"\u003e#5600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee2cf9e1ebf24c14b888fa69eee96713aa6d64b1a Accept ragged code sizes in faiss::hammings(), and fix the vectorization axis for wide codes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5520\"\u003e#5520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e545550f6a27031c2269881d97237fd6a5bef15df Use unittest assertions and f-strings in test_index_composite (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5571\"\u003e#5571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaf9eeffcf70d7795107c2b0511bdba507ac45339 Reserve cs vector capacity in hammings_knn_mc_impl to avoid reallocations (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5548\"\u003e#5548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e317a207bcacfcfa695d98289c3f4ea562b782837 ARM SVE optimization for L2 distance kernels adapted to new simd_impl structure (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5098\"\u003e#5098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2027d3b33144dbf19674b540ec0e31b2f842b1cc Make cuVS dispatch opt-in rather than build-implied (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5529\"\u003e#5529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea39e2606887bbacc6c8f54e783c4b42da00cf4b3 Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5521\"\u003e#5521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1f93154314afbef210f0ebebeab840da22f9ec7d Revert D114685755: Fold multi-GPU CAGRA build into train(), delete trainMultiGpu\u003c/li\u003e\n\u003cli\u003e6644dcfa5576221b1a4417fd766a8b2af71d869e Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5500\"\u003e#5500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e80a16564f86530dbf0bfaf96c2b71feffeb5093f Enable Faiss dynamic dispatch for OVIS and VeST fbpkgs (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5515\"\u003e#5515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2688c34f942c8462d97c8632c720a53653456270 Parallelize the k-means++ D^2 seeding update (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5457\"\u003e#5457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e76c67b7b736ca80c2b3ea29528434d6583adc88b Update default Panorama batch size to 1024 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3b50babc5914570576b09da043f64dfd7d62a075 Optimize RVV batch-4 distance kernels (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5469\"\u003e#5469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e7c3b55c01b8418dc044881625a260fceae9c712b Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efb2d57a3121c073828d2ed7d04ccf09d8bea771c Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efc13c81fb8b22f76e4c2c7bd2f027bd049b9a207 Stop aarch64 falling back to SIMDLevel::NONE in faiss dispatch (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5572\"\u003e#5572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e00928e3f7628b8288c17cfece5ee9600a8287f56 Fix ROCm CI: build in a dedicated conda env instead of the runner's broken base (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5545\"\u003e#5545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1e5780fbbfbe191f3ed3517f93ace8301239e9b2 Fix OOB read in \u003ccode\u003ePanorama::reconstruct\u003c/code\u003e via \u003ccode\u003eIndexPreTransform\u003c/code\u003e (T287094917) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5562\"\u003e#5562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2ed4c106e9fb9686e7727e5daf8ad6ad1e164109 Fix: Windows SIMD detection (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5497\"\u003e#5497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb4c66ba6031d1f659163e43430f8ce745b0dbe79 Fix reverse_index_factory/get_code_size round-trip for HNSW, IMI and IVFPQR (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5564\"\u003e#5564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ec0084f5cd2534236acda05cf7b8e0fc8062ddec3 Clamp EDEN unbiased L2 distances to be non-negative (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5569\"\u003e#5569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6457e941f5f4808303bb480679cb78df0df51934 Contain DirectoryArchiver entries within the extraction root (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5561\"\u003e#5561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eac60182fc009476c91a2788e639191d1f624157f RaBitQ: Fix zero residual sign convention (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5553\"\u003e#5553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1a0cfa64e015923d5009d8c7d917aa591e9eac9a Apply the deserialization byte limit to SVS IVF (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5568\"\u003e#5568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e718002f7cf269f3f3752dde04a4cc3f8eabb0050 Fix distance conversion in IndexBinaryFromFloat for non-L2 metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5549\"\u003e#5549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e02ea14372c9983f3eaa15698512180dc62ea234d Fix range_search_max_results to respect all similarity metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5533\"\u003e#5533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebd7087453e6d2262b6e6c76ab0cfa1e2dfeddebf fix(faiss): use is_similarity_metric for IndexShardsIVF merge (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5541\"\u003e#5541\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/75c755c5a1fc854756aaf3bd1131213aeb21d8d1\"\u003e\u003ccode\u003e75c755c\u003c/code\u003e\u003c/a\u003e Add missing CHANGELOG entry for \u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e in v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5651\"\u003e#5651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/d63faeaf5a9b5133c1a500d6c0cf9d934c075cf8\"\u003e\u003ccode\u003ed63faea\u003c/code\u003e\u003c/a\u003e Increment to next release, v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5645\"\u003e#5645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548\"\u003e\u003ccode\u003e3b3711c\u003c/code\u003e\u003c/a\u003e Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3bb48643ab8ea9e50162b354d2463270acd6ed9c\"\u003e\u003ccode\u003e3bb4864\u003c/code\u003e\u003c/a\u003e Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/7c3b55c01b8418dc044881625a260fceae9c712b\"\u003e\u003ccode\u003e7c3b55c\u003c/code\u003e\u003c/a\u003e Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/fb2d57a3121c073828d2ed7d04ccf09d8bea771c\"\u003e\u003ccode\u003efb2d57a\u003c/code\u003e\u003c/a\u003e Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/a74867cf56a73234ad5d957e40c35c9616d4d273\"\u003e\u003ccode\u003ea74867c\u003c/code\u003e\u003c/a\u003e faiss HNSW: delete the flag and the lock-based graph build (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5611\"\u003e#5611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/4fdbc9dc18adbfef3cd410a2446aa4c757320a8a\"\u003e\u003ccode\u003e4fdbc9d\u003c/code\u003e\u003c/a\u003e Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/b5a14632a6f2bfdc824c86d683b9d6e9205c2604\"\u003e\u003ccode\u003eb5a1463\u003c/code\u003e\u003c/a\u003e Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/6bbb068ad8dab612b84304400846da1b14539085\"\u003e\u003ccode\u003e6bbb068\u003c/code\u003e\u003c/a\u003e Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebookresearch/faiss/compare/v1.15.0...v1.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastembed` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/qdrant/fastembed/releases\"\u003efastembed's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - \u003ccode\u003etoken_count()\u003c/code\u003e loads only the tokenizer, not the ONNX model, when \u003ccode\u003elazy_load=True\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e - add \u003ccode\u003elightonai/LateOn\u003c/code\u003e and the multilingual \u003ccode\u003elightonai/mLateOn\u003c/code\u003e by \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/655\"\u003e#655\u003c/a\u003e - add \u003ccode\u003estemmer\u003c/code\u003e and \u003ccode\u003estopwords\u003c/code\u003e parameters to \u003ccode\u003eQdrant/bm25\u003c/code\u003e for languages without a Snowball stemmer, such as Polish by \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/702\"\u003e#702\u003c/a\u003e - add \u003ccode\u003eibm-granite/granite-embedding-small-english-r2\u003c/code\u003e by \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/743\"\u003e#743\u003c/a\u003e - add \u003ccode\u003eBAAI/bge-reranker-v2-m3\u003c/code\u003e and its int8 version \u003ccode\u003eBAAI/bge-reranker-v2-m3-int8\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/747\"\u003e#747\u003c/a\u003e - speed up MUVERA document encoding for large \u003ccode\u003ek_sim\u003c/code\u003e values by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/751\"\u003e#751\u003c/a\u003e - add \u003ccode\u003eQdrant/stella-en-400M-v5-doc-onnx\u003c/code\u003e for documents and the small query encoders \u003ccode\u003eQdrant/constella-zero\u003c/code\u003e and \u003ccode\u003eQdrant/constella-nano\u003c/code\u003e that search its embeddings by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/756\"\u003e#756\u003c/a\u003e - add \u003ccode\u003eoutput_name\u003c/code\u003e to \u003ccode\u003eTextEmbedding.add_custom_model()\u003c/code\u003e to choose which ONNX output a custom model uses by \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes 🔧\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - fix BM42 and miniCOIL failing, and ColBERT keeping punctuation vectors, with \u003ccode\u003elazy_load=True\u003c/code\u003e and \u003ccode\u003eparallel\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/642\"\u003e#642\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/726\"\u003e#726\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/727\"\u003e#727\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/728\"\u003e#728\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/729\"\u003e#729\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/730\"\u003e#730\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/732\"\u003e#732\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e - make model downloads more reliable: re-download corrupted cached files, retry on more network errors, time out on an unresponsive Hugging Face endpoint, and download built-in models from Hugging Face only (see Upgrade Notes) by \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/670\"\u003e#670\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/734\"\u003e#734\u003c/a\u003e - fix a hang when a \u003ccode\u003eparallel\u003c/code\u003e run is stopped early, for example with \u003ccode\u003ebreak\u003c/code\u003e by \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/721\"\u003e#721\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e for a \u003ccode\u003ebatch_size\u003c/code\u003e below 1 by \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/723\"\u003e#723\u003c/a\u003e - fix the licenses listed for \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e (\u003ccode\u003egemma\u003c/code\u003e) and the Unicom models (\u003ccode\u003emit\u003c/code\u003e) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/725\"\u003e#725\u003c/a\u003e - accept nearest-neighbor interpolation in Jina CLIP image preprocessing by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/731\"\u003e#731\u003c/a\u003e - match Jina's center crop in \u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e preprocessing, which was off by 1 px for some image sizes by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/733\"\u003e#733\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e when MUVERA encodes an empty multivector by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/746\"\u003e#746\u003c/a\u003e - fix center crop returning undersized images when it pads by an odd number of pixels by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/754\"\u003e#754\u003c/a\u003e - return \u003ccode\u003efloat32\u003c/code\u003e instead of \u003ccode\u003efloat64\u003c/code\u003e embeddings from mean-pooling text models, such as \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e (regression in 0.6.1) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/757\"\u003e#757\u003c/a\u003e - fix loading models with \u003ccode\u003e.onnx_data\u003c/code\u003e weights from a \u003ccode\u003ehuggingface_hub\u0026gt;=1.32\u003c/code\u003e cache with \u003ccode\u003eonnxruntime\u0026gt;=1.24\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/760\"\u003e#760\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/761\"\u003e#761\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/784\"\u003e#784\u003c/a\u003e - fix \u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e image embeddings in batches that mix aspect ratios, for portrait images, and for very thin images, and speed up its text queries (see Upgrade Notes) by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/768\"\u003e#768\u003c/a\u003e - return \u003ccode\u003eint64\u003c/code\u003e indices from \u003ccode\u003eSparseEmbedding.from_dict({})\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/769\"\u003e#769\u003c/a\u003e - fix a token ID overflow in \u003ccode\u003eQdrant/bm25\u003c/code\u003e query embeddings by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/770\"\u003e#770\u003c/a\u003e - respect \u003ccode\u003ecuda=False\u003c/code\u003e in \u003ccode\u003eparallel\u003c/code\u003e workers, which ran on the GPU when \u003ccode\u003eonnxruntime-gpu\u003c/code\u003e was installed (regression in 0.8.0) by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/771\"\u003e#771\u003c/a\u003e - respect \u003ccode\u003edo_resize=False\u003c/code\u003e in ConvNeXT image preprocessing by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/773\"\u003e#773\u003c/a\u003e - keep very small SPLADE weights by computing them with \u003ccode\u003elog1p\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/775\"\u003e#775\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/776\"\u003e#776\u003c/a\u003e - honor the truncation and padding side from the model's tokenizer config by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuilt-in models now download from Hugging Face only, without the Google Cloud Storage (GCS) fallback some of them had. The GCS buckets stay open, so older versions keep working, and custom models still support both \u003ccode\u003eurl\u003c/code\u003e and \u003ccode\u003ehf\u003c/code\u003e sources. GCS copies cached by older versions still load offline or when Hugging Face is unreachable, with a \u003ccode\u003eFutureWarning\u003c/code\u003e: load the model once online, then delete its \u003ccode\u003efast-\u0026lt;model name\u0026gt;\u003c/code\u003e dir.\u003c/li\u003e\n\u003cli\u003eWe removed a stray 128-token limit from the Hugging Face configs of \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e and \u003ccode\u003eQdrant/bm42-all-minilm-l6-v2-attentions\u003c/code\u003e (now 256 tokens), and \u003ccode\u003ethenlper/gte-large\u003c/code\u003e and \u003ccode\u003eprithivida/Splade_PP_en_v1\u003c/code\u003e (now 512). This applies to any fastembed version on a fresh download, and embeddings of texts over 128 tokens change. A cached model keeps the old limit until you delete it from the cache.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e now loads \u003ccode\u003emodel_v2.onnx\u003c/code\u003e and drops padding rows from its embeddings, so offline setups need to download it first. Re-embed images that were embedded in batches with images of other aspect ratios. The model needs \u003ccode\u003eonnxruntime\u0026gt;=1.19\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLateInteractionMultimodalEmbedding.embed_image\u003c/code\u003e now defaults to \u003ccode\u003ebatch_size=2\u003c/code\u003e instead of 16, which also applies to \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e image embeddings change for some image sizes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to everyone who contributed to this release \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.8.1\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/539499b855478bcb6a810ac89a047de24c3b1866\"\u003e\u003ccode\u003e539499b\u003c/code\u003e\u003c/a\u003e bump version to v0.9.0 (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/789\"\u003e#789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b2e7debc696a71f85ad379df050d0b34c683cf23\"\u003e\u003ccode\u003eb2e7deb\u003c/code\u003e\u003c/a\u003e chore: remove redundant comment (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/788\"\u003e#788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/3c267018ebdbf84924e089e3148aeaf477662bca\"\u003e\u003ccode\u003e3c26701\u003c/code\u003e\u003c/a\u003e fix: show progress bars when downloading new or corrupted model files (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/db785ee93077fce5da745dca921ff9c40863f18f\"\u003e\u003ccode\u003edb785ee\u003c/code\u003e\u003c/a\u003e fix: ColModernVBERT tile grids, mixed-size image batches and fast text querie...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/c0588acf95250d2497e5f5e83233ef343ea74842\"\u003e\u003ccode\u003ec0588ac\u003c/code\u003e\u003c/a\u003e new: create an issue when weekly ci fails (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/781\"\u003e#781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0abff4d6d8c73003697993d2ca3123b3db5b2da7\"\u003e\u003ccode\u003e0abff4d\u003c/code\u003e\u003c/a\u003e new: check wheel before publishing (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/783\"\u003e#783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b566dcb9052dff0878d2ee57c695dd2a89a92d52\"\u003e\u003ccode\u003eb566dcb\u003c/code\u003e\u003c/a\u003e fix: don't fail a download when an older revision is cached (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0db8d09e7c569c2e2f508ef04eabe5ca57309c84\"\u003e\u003ccode\u003e0db8d09\u003c/code\u003e\u003c/a\u003e docs: show full supported model names (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/637\"\u003e#637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/02563ea78aa41e59112b1e9c66352c14bd98040a\"\u003e\u003ccode\u003e02563ea\u003c/code\u003e\u003c/a\u003e feat: Add lightonai/LateOn model (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/6b1e1d2ac5783e639138b3529973cdca45902372\"\u003e\u003ccode\u003e6b1e1d2\u003c/code\u003e\u003c/a\u003e new: add weekly ci to test all models (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/767\"\u003e#767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/qdrant/fastembed/compare/v0.8.0...v0.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-cpp-python` from 0.3.19 to 0.3.36\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/abetlen/llama-cpp-python/blob/main/CHANGELOG.md\"\u003ellama-cpp-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.36]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@0c1e57098\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.35]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@4df29be4f\u003c/li\u003e\n\u003cli\u003efix(example): retain recurrent state for server MTP rollback\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@adb55e514\u003c/li\u003e\n\u003cli\u003efix(server): show falsey defaults in CLI help by \u003ca href=\"https://github.com/cupkk\"\u003e\u003ccode\u003e@​cupkk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2355\"\u003e#2355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: release multimodal contexts when closing Llama by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2343\"\u003e#2343\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.34]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3546c794\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.33]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@78d2f5246\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.32]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): support chained NextN heads for server MTP drafting\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@b3fed31b9\u003c/li\u003e\n\u003cli\u003efix: preserve recurrent/hybrid model state when the full prompt is already cached by \u003ca href=\"https://github.com/allthatido\"\u003e\u003ccode\u003e@​allthatido\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2306\"\u003e#2306\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.31]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@f449e0553\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.30]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3a74b299\u003c/li\u003e\n\u003cli\u003efeat: add Pyodide wheel support by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2309\"\u003e#2309\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.29]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): use MTMD batch encoding by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2301\"\u003e#2301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(example): support server video inputs and Gemma text tool calls by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2291\"\u003e#2291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@f05cf4676\u003c/li\u003e\n\u003cli\u003efix(example): support multi-step Responses tool streaming by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2288\"\u003e#2288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(ci): Repair Linux accelerator wheels for manylinux publishing\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.28]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): align server MTP support with llama.cpp by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2283\"\u003e#2283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@9e3b928fd\u003c/li\u003e\n\u003cli\u003efeat(example): add OpenAI-compatible embeddings endpoint by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2281\"\u003e#2281\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.27]\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/1652066e0af45f2313b339670ef9555e8a54e545\"\u003e\u003ccode\u003e1652066\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.36 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2376\"\u003e#2376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/fcde765f9cf8cbce54c9edb343049b1960859bbc\"\u003e\u003ccode\u003efcde765\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to 0c1e57098 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2375\"\u003e#2375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/ea3b56bdc386d5a6f31120338ffe907211b0907c\"\u003e\u003ccode\u003eea3b56b\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to fb34fc262 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2369\"\u003e#2369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/d73664636c2e3b25ce5949a9b85bba690684cdf3\"\u003e\u003ccode\u003ed736646\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to v0.4.0 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2367\"\u003e#2367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/3691546f1c9e0c1bf93323dff02230bd959cf562\"\u003e\u003ccode\u003e3691546\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.35 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2360\"\u003e#2360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/9dd3950067d513b5487d6cb7b189ccdd71fefa85\"\u003e\u003ccode\u003e9dd3950\u003c/code\u003e\u003c/a\u003e fix(llama): release a vision chat handler's mtmd context on close (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2342\"\u003e#2342\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/d8a4a1e4835b36974154393c44dc852dae357d84\"\u003e\u003ccode\u003ed8a4a1e\u003c/code\u003e\u003c/a\u003e fix(server): show falsey defaults in CLI help (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2355\"\u003e#2355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/03307d8673412e072828abb96dbfb6c37c733ecd\"\u003e\u003ccode\u003e03307d8\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to 4df29be4f (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2359\"\u003e#2359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/987e3df20a8f0f62b8b595191065fd60c3f484d1\"\u003e\u003ccode\u003e987e3df\u003c/code\u003e\u003c/a\u003e fix(example): retain recurrent state for MTP rollback (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/8a0810fa04bde084bd3446d126831ae5bd65e373\"\u003e\u003ccode\u003e8a0810f\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to adb55e514 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2357\"\u003e#2357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/abetlen/llama-cpp-python/compare/v0.3.19...v0.3.36\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.18.1 to 6.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.20.0, 2026-10-09\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit work per stream (filter count, accumulated decoding work) (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4173\"\u003e#4173\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for BrotliDecode filter (PDF 2.0) (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4168\"\u003e#4168\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParse an embedded CFF font program once per stream (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4164\"\u003e#4164\u003c/a\u003e) by \u003ca href=\"https://github.com/marshalltech81\"\u003e\u003ccode\u003e@​marshalltech81\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eParse numbers, indirect references, names and nulls faster (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4148\"\u003e#4148\u003c/a\u003e) by \u003ca href=\"https://github.com/MartinThoma\"\u003e\u003ccode\u003e@​MartinThoma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not inherit PdfObject from a Protocol (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4149\"\u003e#4149\u003c/a\u003e) by \u003ca href=\"https://github.com/MartinThoma\"\u003e\u003ccode\u003e@​MartinThoma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpeed up cloning direct objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4152\"\u003e#4152\u003c/a\u003e) by \u003ca href=\"https://github.com/MartinThoma\"\u003e\u003ccode\u003e@​MartinThoma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReport the correct page number for identical pages (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4154\"\u003e#4154\u003c/a\u003e) by \u003ca href=\"https://github.com/pasmud\"\u003e\u003ccode\u003e@​pasmud\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecrypt the XMP metadata stream unless /EncryptMetadata is false (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4151\"\u003e#4151\u003c/a\u003e) by \u003ca href=\"https://github.com/metsw24-max\"\u003e\u003ccode\u003e@​metsw24-max\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept an ...\n\n_Description has been truncated_","html_url":"https://github.com/CJX0712/worldai-nexus/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJX0712%2Fworldai-nexus/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"5853211104","node_id":"PR_kwDORv5PB88AAAABIdMwIA","number":1661,"state":"closed","title":"Bump the pip-all group with 62 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-10-14T18:49:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T18:19:15.000Z","updated_at":"2026-10-14T18:49:14.000Z","time_to_close":1787,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-all","update_count":62,"packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"torch","old_version":"2.13.0","new_version":"2.14.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"huggingface-hub","old_version":"1.32.0","new_version":"2.2.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"onnxruntime","old_version":"1.30.0","new_version":"1.31.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"nemoguardrails","old_version":"0.24.0","new_version":"0.24.1","repository_url":"https://github.com/NVIDIA-NeMo/Guardrails"},{"name":"langgraph","old_version":"1.2.11","new_version":"1.2.14","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langchain-core","old_version":"1.6.3","new_version":"1.6.9","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"websockets","old_version":"15.0.1","new_version":"17.2","repository_url":"https://github.com/python-websockets/websockets"},{"name":"pgvector","old_version":"0.5.0","new_version":"0.5.1","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"},{"name":"ruff","old_version":"0.16.8","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/python/mypy"},{"name":"deepagents","old_version":"0.6.12","new_version":"0.7.23","repository_url":"https://github.com/langchain-ai/deepagents"},{"name":"langchain","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.6.2","new_version":"1.7.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.7.2","new_version":"1.7.5","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"hatchling","old_version":"1.32.0","new_version":"1.32.4","repository_url":"https://github.com/pypa/hatch"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"langchain-google-genai","old_version":"4.4.0","new_version":"4.4.1","repository_url":"https://github.com/langchain-ai/langchain-google"},{"name":"langsmith","old_version":"0.13.0","new_version":"0.14.7","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"wcmatch","old_version":"11.0","new_version":"11.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"aiohttp","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"fastembed","old_version":"0.8.1","new_version":"0.9.0","repository_url":"https://github.com/qdrant/fastembed"},{"name":"filelock","old_version":"4.0.10","new_version":"4.1.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"hf-xet","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"jsonpatch","old_version":"1.33","new_version":"1.35","repository_url":"https://github.com/stefankoegl/python-json-patch"},{"name":"jsonpointer","old_version":"3.1.1","new_version":"3.2.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"kubernetes","old_version":"36.0.3","new_version":"37.0.1","repository_url":"https://github.com/kubernetes-client/python"},{"name":"langgraph-sdk","old_version":"0.4.5","new_version":"0.4.6","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"marshmallow","old_version":"3.26.2","new_version":"4.3.1","repository_url":"https://github.com/marshmallow-code/marshmallow"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.9.1","new_version":"7.1.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.26.0","new_version":"2.27.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"opentelemetry-api","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-common","old_version":"0.66b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.66b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.12.0","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pybase64","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/mayeut/pybase64"},{"name":"rpds-py","old_version":"2026.6.3","new_version":"2026.9.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"scipy","old_version":"1.17.1","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"tokenizers","old_version":"0.23.2","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"transformers","old_version":"5.18.0","new_version":"5.19.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.27.2","new_version":"0.27.3","repository_url":"https://github.com/fastapi/typer"},{"name":"uuid-utils","old_version":"0.17.1","new_version":"1.0.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"wcwidth","old_version":"0.9.1","new_version":"0.9.2","repository_url":"https://github.com/jquast/wcwidth"},{"name":"pbr","old_version":"7.0.3","new_version":"7.1.3"},{"name":"openai","old_version":"3.24.0","new_version":"3.29.0","repository_url":"https://github.com/openai/openai-python"},{"name":"anthropic","old_version":"1.11.0","new_version":"1.13.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"bracex","old_version":"3.0.1","new_version":"3.1","repository_url":"https://github.com/facelessuser/bracex"},{"name":"google-auth","old_version":"2.59.1","new_version":"2.61.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-genai","old_version":"2.28.0","new_version":"2.29.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-all group with 62 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.13.0` | `2.14.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.32.0` | `2.2.0` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.30.0` | `1.31.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [nemoguardrails](https://github.com/NVIDIA-NeMo/Guardrails) | `0.24.0` | `0.24.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.11` | `1.2.14` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.6.3` | `1.6.9` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `17.2` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.5.0` | `0.5.1` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.8` | `0.17.0` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.4.0` |\n| [deepagents](https://github.com/langchain-ai/deepagents) | `0.6.12` | `0.7.23` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.4.2` | `1.4.4` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.6.2` | `1.7.0` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.7.2` | `1.7.5` |\n| [hatchling](https://github.com/pypa/hatch) | `1.32.0` | `1.32.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.0` |\n| [langchain-google-genai](https://github.com/langchain-ai/langchain-google) | `4.4.0` | `4.4.1` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.13.0` | `0.14.7` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `11.0` | `11.1` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.3` | `3.14.5` |\n| [fastembed](https://github.com/qdrant/fastembed) | `0.8.1` | `0.9.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `4.0.10` | `4.1.1` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.6.0` | `1.7.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [jsonpatch](https://github.com/stefankoegl/python-json-patch) | `1.33` | `1.35` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.1.1` | `3.2.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `36.0.3` | `37.0.1` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.5` | `0.4.6` |\n| [marshmallow](https://github.com/marshmallow-code/marshmallow) | `3.26.2` | `4.3.1` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.9.1` | `7.1.0` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.26.0` | `2.27.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-common](https://github.com/open-telemetry/opentelemetry-python) | `0.66b0` | `0.66b1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.66b0` | `0.66b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.12.0` | `3.13.0` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.5.0` | `1.5.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.6.3` | `2026.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.17.1` | `1.18.1` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.23.2` | `0.23.3` |\n| [transformers](https://github.com/huggingface/transformers) | `5.18.0` | `5.19.0` |\n| [typer](https://github.com/fastapi/typer) | `0.27.2` | `0.27.3` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.17.1` | `1.0.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.9.1` | `0.9.2` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `7.0.3` | `7.1.3` |\n| [openai](https://github.com/openai/openai-python) | `3.24.0` | `3.29.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `1.11.0` | `1.13.0` |\n| [bracex](https://github.com/facelessuser/bracex) | `3.0.1` | `3.1` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.59.1` | `2.61.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.28.0` | `2.29.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0b2 2026-09-09\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis pre-release adds full support for Python 3.15 specific features, such as support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e, making use of \u003ca href=\"https://docs.python.org/3.15/library/typing.html#typing.TypeForm\"\u003e\u003ccode\u003eTypeForm\u003c/code\u003e\u003c/a\u003e and stabilizing the \u003ca href=\"https://pydantic.dev/docs/validation/latest/concepts/types/#missing-sentinel\"\u003e\u003ccode\u003eMISSING\u003c/code\u003e sentinel\u003c/a\u003e type.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow any \u003ccode\u003eCoreSchema\u003c/code\u003e to be used as serialization by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13680\"\u003e#13680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e type by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13634\"\u003e#13634\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.14.0b2 (2026-09-09)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0b2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fcdefa7198c4fc94a22eecf1a5b7926e20b9fc8a\"\u003e\u003ccode\u003efcdefa7\u003c/code\u003e\u003c/a\u003e Correct v2.14.0 release date (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13952\"\u003e#13952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c821eaccf9873357477a1e7d2d4d12dd4e161c8a\"\u003e\u003ccode\u003ec821eac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Respect config in \u003ccode\u003eTypeAdapter.json_schemas()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13890\"\u003e#13890\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13951\"\u003e#13951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a656b75d58a80f5033f376f7af17092606bbfde2\"\u003e\u003ccode\u003ea656b75\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13948\"\u003e#13948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b4028f9d87e34750e53be0ba011d70f3c0fcc94e\"\u003e\u003ccode\u003eb4028f9\u003c/code\u003e\u003c/a\u003e Avoid validating URL prefix multiple times in multi host URLs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13945\"\u003e#13945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/69ed168e9ad465eef4c8d81efb152a93b604daf5\"\u003e\u003ccode\u003e69ed168\u003c/code\u003e\u003c/a\u003e Reject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13944\"\u003e#13944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/895c0c285c5cb4c0c7c7a4619a80941c12f2c75f\"\u003e\u003ccode\u003e895c0c2\u003c/code\u003e\u003c/a\u003e Fix datetime parsing in custom validator examples (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13931\"\u003e#13931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d2cbaaab74ba4a26bb66f604199ec9793aab6177\"\u003e\u003ccode\u003ed2cbaaa\u003c/code\u003e\u003c/a\u003e Bump virtualenv from 20.36.1 to 21.7.13 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13943\"\u003e#13943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3fbc25ab2bd4f370f478102652f20aea1f5de0b0\"\u003e\u003ccode\u003e3fbc25a\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e dependencies (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13942\"\u003e#13942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/027b5c714791d5f6e86faea4110ef26f4776648c\"\u003e\u003ccode\u003e027b5c7\u003c/code\u003e\u003c/a\u003e Rebuild incomplete types during serialization inference (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13922\"\u003e#13922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2706d1f6cdd0ca5b941fd5170ecf0254f933e1f6\"\u003e\u003ccode\u003e2706d1f\u003c/code\u003e\u003c/a\u003e Handle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13940\"\u003e#13940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `torch` from 2.13.0 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytorch/pytorch/releases\"\u003etorch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyTorch 2.14.1 Release\u003c/h2\u003e\n\u003cp\u003eThis release is meant to fix the following regressions and silent correctness issues:\u003c/p\u003e\n\u003ch2\u003eSilent correctness fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003etorch.linalg.lstsq\u003c/code\u003e solutions on MPS for complex batched underdetermined systems (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/196113\"\u003e#196113\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/196128\"\u003e#196128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-orthogonal \u003ccode\u003eU\u003c/code\u003e and inaccurate small singular values from \u003ccode\u003etorch.linalg.svd\u003c/code\u003e on MPS for rank-deficient and ill-conditioned inputs (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/196112\"\u003e#196112\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/196139\"\u003e#196139\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/199063\"\u003e#199063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the CUDA 13.2 Linux binaries to CUDA 13.2.2 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/196351\"\u003e#196351\u003c/a\u003e). This NVIDIA update resolves two critical issues that could produce incorrect results (\u003ca href=\"https://docs.nvidia.com/cuda/archive/13.2.2/cuda-toolkit-release-notes/index.html#overview\"\u003eCUDA 13.2.2 release notes\u003c/a\u003e):\n\u003cul\u003e\n\u003cli\u003ecuBLAS: \u003ccode\u003ecublasLtMatmul()\u003c/code\u003e could ignore tensor-wide scaling for NVFP4 matrix multiplications (introduced in CUDA 13.2 Update 1)\u003c/li\u003e\n\u003cli\u003eCompiler: failed thread reconvergence could leave stale or corrupted register values in kernels with nested thread divergence (present since CUDA 12.8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRegression fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003etorch.linalg.svd\u003c/code\u003e, \u003ccode\u003etorch.linalg.svdvals\u003c/code\u003e and \u003ccode\u003etorch.linalg.lstsq\u003c/code\u003e failing on MPS with a Metal pipeline-state error for inputs above 8192 elements (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/195937\"\u003e#195937\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/195949\"\u003e#195949\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/195950\"\u003e#195950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix internal assert in \u003ccode\u003etorch.svd(out=)\u003c/code\u003e on MPS for complex inputs (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/195822\"\u003e#195822\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/195872\"\u003e#195872\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePyTorch 2.14.0 Release Notes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#highlights\"\u003eHighlights\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#backwards-incompatible-changes\"\u003eBackwards Incompatible Changes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#deprecations\"\u003eDeprecations\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#new-features\"\u003eNew Features\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#improvements\"\u003eImprovements\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#bug-fixes\"\u003eBug fixes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#performance\"\u003ePerformance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#documentation\"\u003eDocumentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#security\"\u003eSecurity\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#developers\"\u003eDevelopers\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eFor more details about these highlighted features, you can look at the release blogpost. Below are the full release notes for this release.\u003c/p\u003e\n\u003ch1\u003eBackwards Incompatible Changes\u003c/h1\u003e\n\u003ch2\u003etorch.nn\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etorch.nn.LinearCrossEntropyOptions\u003c/code\u003e no longer accepts \u003ccode\u003eacc_policy=\u0026quot;balanced\u0026quot;\u003c/code\u003e; use \u003ccode\u003e\u0026quot;compact\u0026quot;\u003c/code\u003e instead (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/188283\"\u003e#188283\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003e\u0026quot;balanced\u0026quot;\u003c/code\u003e policy was removed because \u003ccode\u003e\u0026quot;compact\u0026quot;\u003c/code\u003e provides the same weight-gradient accumulation precision with lower memory use on CUDA, already uses the equivalent scratch layout for mixed-precision inputs on other devices, and was never selected by \u003ccode\u003e\u0026quot;auto\u0026quot;\u003c/code\u003e. Constructing the options with \u003ccode\u003eacc_policy=\u0026quot;balanced\u0026quot;\u003c/code\u003e now raises \u003ccode\u003eValueError: invalid acc_policy: 'balanced'; expected one of 'auto', 'accurate', 'compact'\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/5c4886908584029761b579af026dcfb627c84070\"\u003e\u003ccode\u003e5c48869\u003c/code\u003e\u003c/a\u003e [MPS] Fix Jacobi SVD convergence for small columns (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/199086\"\u003e#199086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/35223a275e49a6154269e19ac34b7fdd9709d031\"\u003e\u003ccode\u003e35223a2\u003c/code\u003e\u003c/a\u003e [release/2.14] Run the release runner-group reconcile in pytorch/pytorch (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/19\"\u003e#19\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/41ffbc4a994e058af9fe00ed5caba73fc1033359\"\u003e\u003ccode\u003e41ffbc4\u003c/code\u003e\u003c/a\u003e [release-only] Update version to 2.14.1 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/198661\"\u003e#198661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/e8f0c016eefa7870720d625f4e71bb6265d6c5c0\"\u003e\u003ccode\u003ee8f0c01\u003c/code\u003e\u003c/a\u003e [release/2.14] [CD] Update to CUDA 13.2.2 for Linux binaries (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/198644\"\u003e#198644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/911665dcb02655bac5948e5ced8d8232372d9941\"\u003e\u003ccode\u003e911665d\u003c/code\u003e\u003c/a\u003e [MPS] Cherry-pick native SVD fixes into release/2.14 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/198394\"\u003e#198394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/2b3ec34829036a65cd9d1398ea72a0167dc37470\"\u003e\u003ccode\u003e2b3ec34\u003c/code\u003e\u003c/a\u003e [release/2.14] Import SDPAParams in test_transformers to fix lint (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194970\"\u003e#194970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/08187d9e0fba026dc8217405802ab5381dc88d90\"\u003e\u003ccode\u003e08187d9\u003c/code\u003e\u003c/a\u003e [cuDNN] Add guards for cuDNN SDPA decode (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194963\"\u003e#194963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/8ceea97051dec8f6bee23d24bd7704dcb6843ade\"\u003e\u003ccode\u003e8ceea97\u003c/code\u003e\u003c/a\u003e Pin cython \u0026lt; 3.3.0 for the Windows Triton wheel build (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194931\"\u003e#194931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/99ecebc63014f3454331b5a0914871daa063b512\"\u003e\u003ccode\u003e99ecebc\u003c/code\u003e\u003c/a\u003e [Cherry-pick][release/2.14] [inductor] Fix loop-local load CSE lifetime (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194\"\u003e#194\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/ec283a75077fa3ee24a9cda2c58d2b24d95ca98c\"\u003e\u003ccode\u003eec283a7\u003c/code\u003e\u003c/a\u003e Bump the Python 3.15 numpy pin to 2.5.2 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194821\"\u003e#194821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytorch/pytorch/compare/v2.13.0...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `huggingface-hub` from 1.32.0 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/huggingface_hub/releases\"\u003ehuggingface-hub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v2.2.0] \u003ccode\u003ehf jobs stats\u003c/code\u003e snapshots, download and \u003ccode\u003eHfFileSystem\u003c/code\u003e fixes\u003c/h2\u003e\n\u003cp\u003eA small release this week, mostly bug fixes and quality-of-life improvements. \u003ccode\u003ehf jobs stats\u003c/code\u003e now returns right away instead of streaming forever, concurrent downloads reliably use \u003ccode\u003ehf_xet\u003c/code\u003e, and \u003ccode\u003eHfFileSystem\u003c/code\u003e caching is more predictable. Two behavior changes are listed under \u003ca href=\"https://github.com/huggingface/huggingface_hub/blob/HEAD/#-breaking-changes\"\u003eBreaking changes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e📊 \u003ccode\u003ehf jobs stats\u003c/code\u003e prints a snapshot by default\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehf jobs stats\u003c/code\u003e used to stream metrics until the job finished, so scripts and agents calling it on a running job hung until their own timeout. It now prints the latest sample of each job once and exits, like \u003ccode\u003ehf jobs logs\u003c/code\u003e and \u003ccode\u003ehf spaces logs\u003c/code\u003e. Use \u003ccode\u003e-f/--follow\u003c/code\u003e for the previous live view. Snapshot output also supports \u003ccode\u003e--format json|agent|quiet\u003c/code\u003e, which outputs the raw API metrics.\u003c/p\u003e\n\u003cp\u003eOn the Python side, \u003ccode\u003eHfApi.fetch_job_metrics\u003c/code\u003e gets the same \u003ccode\u003efollow\u003c/code\u003e parameter as \u003ccode\u003efetch_job_logs\u003c/code\u003e. It defaults to \u003ccode\u003eFalse\u003c/code\u003e and returns only the current sample. Pass \u003ccode\u003efollow=True\u003c/code\u003e to stream until the job completes.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e\u0026gt;\u0026gt;\u0026gt; hf jobs stats 6ac3bd9afbc85ba6823a9ad4\r\nJOB ID                CPU % NUM CPU MEM % MEM USAGE      NET I/O         GPU UTIL % GPU MEM % GPU MEM USAGE\r\n--------------------- ----- ------- ----- -------------- --------------- ---------- --------- -------------\r\n6ac3bd9afbc85ba682... 0%    2.0     0.01% 1.0MB / 16.0GB 0.0bps / 0.0bps N/A        N/A       N/A\r\nHint: Use `hf jobs stats -f celinah/6ac3bd9afbc85ba6823a9ad4` to follow live stats.\r\n\u003ch1\u003eStream live stats until the job completes\u003c/h1\u003e\n\u003cp\u003e\u0026gt;\u0026gt;\u0026gt; hf jobs stats -f 6ac3bd9afbc85ba6823a9ad4\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e\u0026gt;\u0026gt;\u0026gt; from huggingface_hub import fetch_job_metrics\r\n\u0026gt;\u0026gt;\u0026gt; for metrics in fetch_job_metrics(job_id=job.id, follow=True):\r\n...     print(metrics)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOther Jobs fixes in this release: \u003ccode\u003ehf jobs logs\u003c/code\u003e and \u003ccode\u003ehf spaces logs\u003c/code\u003e without \u003ccode\u003e-f\u003c/code\u003e no longer hang while the job keeps printing, \u003ccode\u003ehf jobs stats\u003c/code\u003e no longer fails when one of the requested jobs has finished, and \u003ccode\u003ehf jobs stats --json\u003c/code\u003e prints \u003ccode\u003e[]\u003c/code\u003e when no job is running.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e[CLI] Snapshot by default in hf jobs stats, add -f/--follow by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5090\"\u003e#5090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLI] Fix empty hf jobs stats --json output with no running jobs by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5094\"\u003e#5094\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Jobs] Fix no-follow logs hanging while the job keeps printing by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5092\"\u003e#5092\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Jobs] Ignore 406 from metrics endpoint for finished jobs by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5091\"\u003e#5091\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e📚 \u003cstrong\u003eDocumentation:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/huggingface_hub/main/en/guides/jobs\"\u003eJobs guide\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e⚡ Concurrent downloads always use \u003ccode\u003ehf_xet\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003eIn a fresh process, the first concurrent \u003ccode\u003ehf_hub_download\u003c/code\u003e calls could read a placeholder version for \u003ccode\u003ehf_xet\u003c/code\u003e while another thread was still looking it up. Those calls treated \u003ccode\u003ehf_xet\u003c/code\u003e as missing and downloaded through the plain HTTP path. This mostly affected parallel downloads such as \u003ccode\u003esnapshot_download\u003c/code\u003e, where some of the files skipped Xet. The version lookup is now cached only once it is resolved, so every download sees the real value.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003e_get_version\u003c/code\u003e that makes concurrent downloads skip hf_xet by \u003ca href=\"https://github.com/BramVanroy\"\u003e\u003ccode\u003e@​BramVanroy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5102\"\u003e#5102\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📂 \u003ccode\u003eHfFileSystem\u003c/code\u003e cache fixes\u003c/h2\u003e\n\u003cp\u003eThree fixes to how \u003ccode\u003eHfFileSystem\u003c/code\u003e caches listings and missing paths:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003els()\u003c/code\u003e on a newly created empty bucket returns an empty list instead of raising \u003ccode\u003eFileNotFoundError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eDirectory listings are now replaced in the cache instead of appended to. Before, \u003ccode\u003els()\u003c/code\u003e after \u003ccode\u003efind()\u003c/code\u003e or \u003ccode\u003els(refresh=True)\u003c/code\u003e could return duplicate entries, \u003ccode\u003erefresh=True\u003c/code\u003e kept deleted files, and listing a single bucket file cached it as the whole folder's listing.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eexists(path, refresh=True)\u003c/code\u003e and \u003ccode\u003einvalidate_cache(path)\u003c/code\u003e now clear cached \u0026quot;not found\u0026quot; results. Before, a repo, branch or bucket created in the same process stayed missing until a full \u003ccode\u003einvalidate_cache()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/acfdf30d99441317270cca6e9362dd7f9ff47c55\"\u003e\u003ccode\u003eacfdf30\u003c/code\u003e\u003c/a\u003e Release: v2.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/193d9d921f9c7a4b57cb664d89108bf50dcf06c6\"\u003e\u003ccode\u003e193d9d9\u003c/code\u003e\u003c/a\u003e Release: v2.2.0.rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/5be356510bbd151bc8310d9da989501cbe004779\"\u003e\u003ccode\u003e5be3565\u003c/code\u003e\u003c/a\u003e [Cache] Speed up delete_revisions with a set lookup (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5118\"\u003e#5118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/dab6a964b1e522f50e6bd1dd6a0056b8bb8de5cc\"\u003e\u003ccode\u003edab6a96\u003c/code\u003e\u003c/a\u003e [CLI] Don't glob-expand arguments on Windows (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/cca4d3a3bfe057911211a4857d5776d075a3bf6a\"\u003e\u003ccode\u003ecca4d3a\u003c/code\u003e\u003c/a\u003e [Download] Fix offline snapshot_download with a pinned revision (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5113\"\u003e#5113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/c6cc03e179191985b52e1f0956766d944b46a10b\"\u003e\u003ccode\u003ec6cc03e\u003c/code\u003e\u003c/a\u003e Fix argument name in raise_text_generation_error docstring (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5108\"\u003e#5108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/8abbfe56999a650d84e35204c0f4f71d16087bb8\"\u003e\u003ccode\u003e8abbfe5\u003c/code\u003e\u003c/a\u003e Fix race in \u003ccode\u003e_get_version\u003c/code\u003e that makes concurrent downloads skip hf_xet (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5102\"\u003e#5102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/bb3a875b13b131d06a10325b2f07d6de4776966f\"\u003e\u003ccode\u003ebb3a875\u003c/code\u003e\u003c/a\u003e [Docs] Fix from_pretrained integration example (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5105\"\u003e#5105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/cf992a93d6b7481158eac47469be763dcd8d58f0\"\u003e\u003ccode\u003ecf992a9\u003c/code\u003e\u003c/a\u003e [HfFileSystem] Make refresh=True clear cached not-found results (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/af741671a6e49296b22f1b827298b3c688769a48\"\u003e\u003ccode\u003eaf74167\u003c/code\u003e\u003c/a\u003e [Tests] Wait for bucket listings after writes (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/huggingface_hub/compare/v1.32.0...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `onnxruntime` from 1.30.0 to 1.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/onnxruntime/releases\"\u003eonnxruntime's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eONNX Runtime v1.31.0\u003c/h2\u003e\n\u003cp\u003eONNX Runtime 1.31.0 stabilizes model-package and EPContext data APIs, improves CPU model loading and quantized MoE inference, expands device-based execution-provider selection, and strengthens model-loading and runtime reliability. These notes cover changes since ONNX Runtime 1.30.0. CUDA and WebGPU kernel updates are summarized here; detailed provider notes are covered by their separate plugin EP releases.\u003c/p\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePromoted the model-package API and EPContext data callbacks to stable C and C++ APIs, with EPContext callback support added across language bindings (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33166\"\u003e#33166\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32265\"\u003e#32265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eReduced CPU session-initialization overhead by parallelizing eligible weight prepacking, and accelerated block-wise INT4/INT8 QMoE experts with MLAS QNBit kernels and grouped expert dispatch (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31691\"\u003e#31691\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32644\"\u003e#32644\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32668\"\u003e#32668\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded x86 FP16 LayerNorm/RMSNorm acceleration, Arm KleidiAI SVE2.1 FP16 GEMM support, and additional RISC-V vector kernels (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32715\"\u003e#32715\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32670\"\u003e#32670\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32710\"\u003e#32710\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEnabled CoreML participation in device-based EP selection, including Apple Neural Engine selection through \u003ccode\u003ePREFER_NPU\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31975\"\u003e#31975\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded workspace-memory accounting and verification for constrained-memory graph partitioning, alongside broader model, graph, and tensor validation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31962\"\u003e#31962\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32189\"\u003e#32189\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAnnouncements \u0026amp; Compatibility\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/releases/tag/plugin-ep-cuda/v0.3.0\"\u003eCUDA Plugin EP v0.3.0\u003c/a\u003e and WebGPU Plugin EP v0.5.0 are matched with ONNX Runtime 1.31.0. For \u003cstrong\u003econtrib-op compatibility\u003c/strong\u003e, core and the plugin must use the same contributed-operator schemas; building both from the \u003cstrong\u003esame ONNX Runtime revision\u003c/strong\u003e is recommended. Schema mismatches can cause incorrect execution or crashes and may not be detected during plugin registration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eGatherBlockQuantized\u003c/code\u003e behavior change:\u003c/strong\u003e out-of-range indices now produce zero output slices across CPU, CUDA, and WebGPU for both integer and floating-point quantized formats. This deliberately differs from ONNX \u003ccode\u003eGather\u003c/code\u003e error semantics (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32480\"\u003e#32480\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExperimental API migration:\u003c/strong\u003e model-package consumers should use \u003ccode\u003eOrtApi::GetModelPackageApi\u003c/code\u003e and the stable \u003ccode\u003eOrtModelPackageApi\u003c/code\u003e table. EPContext callback registration now uses stable APIs; the corresponding experimental lookup entries were removed. The stable native callback contract carries callback/state pointers, with payload limits enforced by application callbacks, bindings, or EPs rather than a native read-options policy (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33166\"\u003e#33166\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32265\"\u003e#32265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eACL EP is deprecated\u003c/strong\u003e and will be removed in a future release. Source builds using \u003ccode\u003e--use_acl\u003c/code\u003e now receive a deprecation warning (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32564\"\u003e#32564\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eThe ONNX dependency remains at \u003cstrong\u003e1.22.0\u003c/strong\u003e. The initial ONNX 1.23 integration was reverted pending upstream fixes; this release does not ship that integration's new opset or FLOAT6 support (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33073\"\u003e#33073\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupported native builds now default to \u003cstrong\u003e1DS telemetry\u003c/strong\u003e. Windows TraceLogging remains selectable with \u003ccode\u003e--use_windows_telemetry\u003c/code\u003e or \u003ccode\u003eonnxruntime_USE_WINDOWS_TELEMETRY=ON\u003c/code\u003e; telemetry can be disabled with \u003ccode\u003e--no_telemetry\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32384\"\u003e#32384\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003ch3\u003eCore APIs \u0026amp; Runtime\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStabilized the model-package C and C++ APIs for loading packages, selecting compatible model variants, and creating sessions (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33166\"\u003e#33166\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStabilized named EPContext data read/write callbacks for application-managed storage. Added EP support negotiation so registered callbacks do not silently fall back to filesystem I/O (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32265\"\u003e#32265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExtended the Compile API to write external initializers and EP context data to buffers, enabling in-memory compilation workflows for models larger than 2 GB (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31347\"\u003e#31347\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded workspace-memory accounting, source reporting, and post-partition reservation verification. Set \u003ccode\u003esession.strict_workspace_verification=1\u003c/code\u003e to fail initialization on workspace declaration overruns or nonzero orphaned reservations; strict verification is not supported for ORT-format model loads (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31962\"\u003e#31962\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32189\"\u003e#32189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded the opt-in source-build option \u003ccode\u003eonnxruntime_DISABLE_DEVICE_DISCOVERY=ON\u003c/code\u003e to skip platform accelerator probing and report only the CPU device (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32592\"\u003e#32592\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eShared Contrib Operators\u003c/h3\u003e\n\u003cp\u003eThese updates affect core operator schemas and cross-provider behavior, not only the separately released GPU plugins.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eExtended \u003ccode\u003eEngramGate\u003c/code\u003e and \u003ccode\u003eNGramHashMapping\u003c/code\u003e for Qwen4-Exp, and added \u003ccode\u003eVarlenNGramHashMapping\u003c/code\u003e for packed DeepSeek Engram batching with request-local history. Packed hashing also supports Qwen4-Exp head offsets, EOS resets, and segment boundaries (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32285\"\u003e#32285\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32358\"\u003e#32358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32467\"\u003e#32467\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eactivation\u003c/code\u003e attribute to \u003ccode\u003eGatedRMSNorm\u003c/code\u003e for SiLU, its Swish alias, and Sigmoid gating across CPU, CUDA, and WebGPU. SiLU remains the default (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32512\"\u003e#32512\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded weightless hyper-connection operators \u003ccode\u003eBranchwiseRMSNorm\u003c/code\u003e, \u003ccode\u003eScaledSiLU\u003c/code\u003e, \u003ccode\u003eHyperConnectionPreMix\u003c/code\u003e, and \u003ccode\u003eHyperConnectionPostMix\u003c/code\u003e, with CPU, CUDA, and WebGPU implementations (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32687\"\u003e#32687\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExtended \u003ccode\u003eGatherBlockQuantized\u003c/code\u003e to FP8/FP4 data, full-axis blocks, and scale broadcasting, and improved CPU UINT8 dequantization. See the out-of-range-index behavior change above (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32480\"\u003e#32480\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32621\"\u003e#32621\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePlugin Execution Provider Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for statically linked plugin EPs, with a static WebGPU plugin build configuration (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32395\"\u003e#32395\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePreserved caller streams in single-tensor plugin data transfers and handled null plugin allocator returns (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32666\"\u003e#32666\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32683\"\u003e#32683\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeduplicated AutoEP custom-op domains and corrected EP assignment reporting after NHWC layout transformation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32711\"\u003e#32711\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33184\"\u003e#33184\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded reference guidance for compiled-model compatibility validation, including multi-device scenarios (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29168\"\u003e#29168\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eExecution Provider Updates\u003c/h2\u003e\n\u003ch3\u003eCUDA EP\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/402979ac1bef89dcd55add41eaa7277c407599eb\"\u003e\u003ccode\u003e402979a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Bump version to 1.32.0 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33197\"\u003e#33197\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/660125b35916c134c00bc746c34503321e17150f\"\u003e\u003ccode\u003e660125b\u003c/code\u003e\u003c/a\u003e [Compile API] Add support for writing external initializers and EP context to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/06cab16f5727506b6013ff7f77264e7ba5607651\"\u003e\u003ccode\u003e06cab16\u003c/code\u003e\u003c/a\u003e Update parameterized requirement from \u0026gt;=0.8.1 to \u0026gt;=0.9.0 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33022\"\u003e#33022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/864d87126864c64651f58a9b51d9006ad71b2c78\"\u003e\u003ccode\u003e864d871\u003c/code\u003e\u003c/a\u003e Fix isolated provider tests in Windows GPU CI (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33203\"\u003e#33203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/174470241c9c62da79f34c80ab56826c0844ae7f\"\u003e\u003ccode\u003e1744702\u003c/code\u003e\u003c/a\u003e Bump baseline-browser-mapping from 2.10.31 to 2.11.26 in /js/react_native/e2e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/be3b8e8864f295f95c9a8d4092bd4b6fa2e9de8e\"\u003e\u003ccode\u003ebe3b8e8\u003c/code\u003e\u003c/a\u003e Fix complex STFT window handling (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33136\"\u003e#33136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/40a7167d5f7c4de069ea898189db6c53975ea094\"\u003e\u003ccode\u003e40a7167\u003c/code\u003e\u003c/a\u003e [CPU] Avoid degenerate GQA FlashAttention tiles when L2 cache size is unknown...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/430f563dec9c7c15db5b0e867f542bf41f2cc11f\"\u003e\u003ccode\u003e430f563\u003c/code\u003e\u003c/a\u003e Fix EP assignment reporting after NHWC layout transformation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33184\"\u003e#33184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/26ab6c7951314bbfe82d80e36cd6ad49725fc2de\"\u003e\u003ccode\u003e26ab6c7\u003c/code\u003e\u003c/a\u003e Improve GQA shared-cache and sliding-window handling (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33175\"\u003e#33175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/d8024cdcd35022b184504ad55d019bb69443ec1d\"\u003e\u003ccode\u003ed8024cd\u003c/code\u003e\u003c/a\u003e Improve CUDA RMSNorm reduction and aligned half2 output (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33178\"\u003e#33178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/onnxruntime/compare/v1.30.0...v1.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `starlette` from 1.6.0 to 1.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental OpenTelemetry tracing, HTTP \u003ccode\u003eQUERY\u003c/code\u003e support, and response trailers in \u003ccode\u003eTestClient\u003c/code\u003e. Starlette now requires AnyIO 4.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\n\u003ccode\u003eOpenTelemetryMiddleware\u003c/code\u003e is experimental. Its API and emitted telemetry may change in minor releases without a deprecation period.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eOpenTelemetryMiddleware\u003c/code\u003e for HTTP server spans, with URL exclusions and custom tracer providers \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3438\"\u003e#3438\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3463\"\u003e#3463\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3520\"\u003e#3520\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExpose the matched route through \u003ccode\u003escope[\u0026quot;route\u0026quot;]\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3438\"\u003e#3438\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport the \u003ccode\u003eQUERY\u003c/code\u003e HTTP method in \u003ccode\u003eHTTPEndpoint\u003c/code\u003e, CORS, and OpenAPI 3.2 schema generation \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3489\"\u003e#3489\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCapture HTTP response trailers in \u003ccode\u003eTestClient\u003c/code\u003e and expose them through \u003ccode\u003eresponse.extensions[\u0026quot;http.response.trailers\u0026quot;]\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3563\"\u003e#3563\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport partitioned cookies in \u003ccode\u003eSessionMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3510\"\u003e#3510\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epartitioned\u003c/code\u003e to \u003ccode\u003eResponse.delete_cookie()\u003c/code\u003e on Python 3.14 and later \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3376\"\u003e#3376\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport IPv6 hosts in \u003ccode\u003eTrustedHostMiddleware\u003c/code\u003e and \u003ccode\u003eTestClient\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3471\"\u003e#3471\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.15 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3508\"\u003e#3508\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire \u003ccode\u003eanyio\u0026gt;=4.0.0,\u0026lt;5\u003c/code\u003e, dropping support for AnyIO 3 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3512\"\u003e#3512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketDisconnected\u003c/code\u003e, a \u003ccode\u003eRuntimeError\u003c/code\u003e subclass, for disconnected WebSocket operations \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/2767\"\u003e#2767\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eCollection[str]\u003c/code\u003e in \u003ccode\u003eCORSMiddleware\u003c/code\u003e configuration annotations, including sets and frozensets \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3518\"\u003e#3518\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRun background tasks only after the response is sent when using \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3476\"\u003e#3476\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003e400\u003c/code\u003e for invalid multipart parser input \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3492\"\u003e#3492\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eVary: Origin\u003c/code\u003e on all normal CORS responses and vary preflight responses by all request headers that affect them \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3516\"\u003e#3516\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3517\"\u003e#3517\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eHandle malformed \u003ccode\u003eHost\u003c/code\u003e headers and IPv6 authorities consistently across URL co...\n\n_Description has been truncated_","html_url":"https://github.com/cgfixit/CyClaw/pull/1661","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgfixit%2FCyClaw/issues/1661","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1661/packages"},{"uuid":"5842697795","node_id":"PR_kwDOS1k_dM8AAAABIUvRTA","number":445,"state":"closed","title":"chore(deps): bump the backend group in /be with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-14T16:57:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T05:51:35.000Z","updated_at":"2026-10-14T16:57:40.000Z","time_to_close":39954,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend","update_count":15,"packages":[{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"fastapi","old_version":"0.135.1","new_version":"0.142.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"resend","old_version":"2.25.0","new_version":"2.49.1","repository_url":"https://github.com/resendlabs/resend-python"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.1.3","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"uuid-utils","old_version":"0.17.0","new_version":"0.17.1","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.54.0"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"ruff","old_version":"0.15.7","new_version":"0.16.10","repository_url":"https://github.com/astral-sh/ruff"}],"path":"/be","ecosystem":"pip"},"body":"Bumps the backend group in /be with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.1` | `0.142.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [resend](https://github.com/resendlabs/resend-python) | `2.25.0` | `2.49.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.1.3` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.17.0` | `0.17.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.42.0` | `0.54.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.16.10` |\n\nUpdates `alembic` from 1.18.4 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026quot;recreate\u0026quot; operation.  An unnamed\nCHECK constraint can't be reliably carried over in a batch recreate\nas it may refer to columns that are being dropped or changed.  This\nomission was previously a silent operation.   The presence of any\n\u003ccode\u003e~sqlalchemy.schema.CheckConstraint\u003c/code\u003e in\n\u003ccode\u003eOperations.batch_alter_table.table_args\u003c/code\u003e is taken to indicate\nthat the case has been accommodated, and no warning is emitted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1846\"\u003e#1846\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Autogenerate now renders a warning comment above any rendered\n\u003ccode\u003eOperations.drop_constraint()\u003c/code\u003e directive for which the constraint name\nis \u003ccode\u003eNone\u003c/code\u003e, as is the case when a constraint that has no name in the model\nis dropped, most typically within the \u003ccode\u003edowngrade()\u003c/code\u003e function of a\nmigration that adds an unnamed constraint.  A warning is also emitted on\nthe console when the migration script is generated.   The directive\nrequires a non-None name in order to be able to emit a \u0026quot;DROP CONSTRAINT\u0026quot;\ncommand.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/916\"\u003e#916\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where adding a column with a type that generates\nits own CHECK constraint, such as \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or\n\u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e with\n\u003ccode\u003e~sqlalchemy.types.Boolean.create_constraint\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e,\nwould emit the constraint twice when the table was recreated, once under\nthe name generated by the naming convention in use and once under the\nname given to the type.  The constraint is now emitted once, using the\nsame name that would be used outside of batch mode.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1768\"\u003e#1768\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where a CHECK constraint generated by a type such\nas \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or \u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e\nwould lose the name established for it by the naming convention in use\nwhen the table was recreated, as the constraint was regenerated against\nthe temporary table used for the recreate operation.  The naming\nconvention is now resolved against the name of the table being replaced.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.135.1 to 0.142.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.142.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Allow startup when automatic OpenTelemetry configuration fails. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16418\"\u003e#16418\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix repeated endpoint wrapping in included routers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16414\"\u003e#16414\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add native OpenTelemetry support. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16403\"\u003e#16403\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📱 Improve mobile responsiveness of conference rail. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16196\"\u003e#16196\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Remove conf section and add event banner. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16193\"\u003e#16193\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove unused image. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16195\"\u003e#16195\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Use buttons for Termynal controls. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16132\"\u003e#16132\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for hi (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16212\"\u003e#16212\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16210\"\u003e#16210\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16211\"\u003e#16211\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16208\"\u003e#16208\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16209\"\u003e#16209\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16207\"\u003e#16207\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16206\"\u003e#16206\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16205\"\u003e#16205\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16204\"\u003e#16204\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16203\"\u003e#16203\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16202\"\u003e#16202\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16201\"\u003e#16201\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16171\"\u003e#16171\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Fix frontend test timeout with Starlette Git. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16408\"\u003e#16408\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Permit.io. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16406\"\u003e#16406\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump anyio from 4.12.1 to 4.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16375\"\u003e#16375\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 15 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16285\"\u003e#16285\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.3.1 to 1.6.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16289\"\u003e#16289\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump annotated-doc from 0.0.4 to 0.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16288\"\u003e#16288\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typing-inspection from 0.4.2 to 0.4.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16286\"\u003e#16286\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78c4324f0c56bc5282a459978779a9e532d19709\"\u003e\u003ccode\u003e78c4324\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16419\"\u003e#16419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2579ed0d9e73205326463025cc756650f642f511\"\u003e\u003ccode\u003e2579ed0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d4953d2e528b58cfb09bbc28fb25dcda227c6ea\"\u003e\u003ccode\u003e1d4953d\u003c/code\u003e\u003c/a\u003e 🐛 Allow startup when automatic OpenTelemetry configuration fails (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16418\"\u003e#16418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3e33a03bdaa3a89f27d5e0c390c4ba9032f14b5e\"\u003e\u003ccode\u003e3e33a03\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16415\"\u003e#16415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/12ea7f5a5e76c5ba3495c2803f57ed92ac67731b\"\u003e\u003ccode\u003e12ea7f5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ac88f563db5f4d3300d43355eca728c93ed9ffe2\"\u003e\u003ccode\u003eac88f56\u003c/code\u003e\u003c/a\u003e 🐛 Fix repeated endpoint wrapping in included routers (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16414\"\u003e#16414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd41128123fd08d693f5541e27c550eebe20f8b0\"\u003e\u003ccode\u003ebd41128\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16411\"\u003e#16411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7aa21e53c859ce52b17196b35909efca6f2fa11f\"\u003e\u003ccode\u003e7aa21e5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b3949cd9e5932f76217131fceabc74145c3db24\"\u003e\u003ccode\u003e4b3949c\u003c/code\u003e\u003c/a\u003e ✨ Add native OpenTelemetry support (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16403\"\u003e#16403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c30032a1b68fb36c03fffe1856369d3824607c7c\"\u003e\u003ccode\u003ec30032a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.1...0.142.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2-binary` from 2.9.11 to 2.9.13\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.13\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.15 (:ticket:\u003ccode\u003e[#1848](https://github.com/psycopg/psycopg2/issues/1848)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix parsing of malformed bytea input.\u003c/li\u003e\n\u003cli\u003eFix parsing of malformed int64 input in arrays (:ticket:\u003ccode\u003e[#1847](https://github.com/psycopg/psycopg2/issues/1847)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003epyproject.toml\u003c/code\u003e file to declare a PEP 517 build backend\n(:ticket:\u003ccode\u003e[#1788](https://github.com/psycopg/psycopg2/issues/1788)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f650e7afed0c94f596594e8328a0c7fa65a9d0e5\"\u003e\u003ccode\u003ef650e7a\u003c/code\u003e\u003c/a\u003e chore: bump to release 2.9.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/368c8a1ca6d80088703a693ce64b68ad7d346698\"\u003e\u003ccode\u003e368c8a1\u003c/code\u003e\u003c/a\u003e chore!: drop support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/9b39e65ab232f0a267a278cdaef1bd9975d88c65\"\u003e\u003ccode\u003e9b39e65\u003c/code\u003e\u003c/a\u003e chore: drop scaleway build support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/2ca70416be6d4d3d8170ec439876c0b3569af718\"\u003e\u003ccode\u003e2ca7041\u003c/code\u003e\u003c/a\u003e fix: fix handling of PostgreSQL 18 exceptions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/5385c027ef62ce14e57a7379e0375868507d6746\"\u003e\u003ccode\u003e5385c02\u003c/code\u003e\u003c/a\u003e Build CPython 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1d32e1f6678ffa8ab8897ca81826bf4dde6354cd\"\u003e\u003ccode\u003e1d32e1f\u003c/code\u003e\u003c/a\u003e ci: only attempt triggering documentation refresh when pushing on main repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/433e7b77a7b700fbb1cdc6e9dca6b5948d07fc23\"\u003e\u003ccode\u003e433e7b7\u003c/code\u003e\u003c/a\u003e chore: add pyproject.toml file to declare a PEP 517 build backend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8fb80bc3b2c358f4e3c54e33a37326d3f8b3ff6a\"\u003e\u003ccode\u003e8fb80bc\u003c/code\u003e\u003c/a\u003e fix: fix parsing of malformed int64 input in arrays\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f98014a46a1e34f024ebd6134d1d87b77490c500\"\u003e\u003ccode\u003ef98014a\u003c/code\u003e\u003c/a\u003e fix: fix parsing of malformed bytea input\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/822b79cfe12ca0a04482acd382cae669a16aa789\"\u003e\u003ccode\u003e822b79c\u003c/code\u003e\u003c/a\u003e chore: bump dependencies in binary package\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 2026-08-28\u003c/h2\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygments` from 2.20.0 to 2.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.21.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\nembedded code blocks (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3133\"\u003e#3133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Recognize \u003ccode\u003e\\[Name]\u003c/code\u003e named-character escapes such as\n\u003ccode\u003e\\[Nu]\u003c/code\u003e instead of emitting an \u003ccode\u003eError\u003c/code\u003e token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.21.0\u003c/h2\u003e\n\u003cp\u003e(released August 17th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/a43b45dcf081b6010c6ab4428f149f7f6d2499c4\"\u003e\u003ccode\u003ea43b45d\u003c/code\u003e\u003c/a\u003e Get ready for the 2.21.0 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d8f14cb395026abb288db38839f57499cba695e0\"\u003e\u003ccode\u003ed8f14cb\u003c/code\u003e\u003c/a\u003e Fix version_added for Purescript.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/19c581704c466cde59fd1a49e04c3424449110f3\"\u003e\u003ccode\u003e19c5817\u003c/code\u003e\u003c/a\u003e Remove superfluous parentheses from PostgresExplainLexer (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9992e0992ad273565f19ffb1b4c9cae96cd8dd00\"\u003e\u003ccode\u003e9992e09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3191\"\u003e#3191\u003c/a\u003e from jvoisin/dupes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bd225771e856b79e8cb5b81533e1eba0cf9fbf85\"\u003e\u003ccode\u003ebd22577\u003c/code\u003e\u003c/a\u003e Fix regexlint warnings after latest update.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6a62df1d1fc77af7e9fc61325ef376297cadffbb\"\u003e\u003ccode\u003e6a62df1\u003c/code\u003e\u003c/a\u003e Release preparation: Update the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/aabba32860b5ba15acabdcba9b436a32e92ce75e\"\u003e\u003ccode\u003eaabba32\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3221\"\u003e#3221\u003c/a\u003e from jvoisin/alter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d3441d00a33467255b8b3ae9862f454e3aa58e3d\"\u003e\u003ccode\u003ed3441d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e from jvoisin/caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c593f3f2f69e09670e58a121437a3c830a643071\"\u003e\u003ccode\u003ec593f3f\u003c/code\u003e\u003c/a\u003e Add a lexer for Caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0644b532c8df1dd67b26471871d432d100252a11\"\u003e\u003ccode\u003e0644b53\u003c/code\u003e\u003c/a\u003e Simplify single-character regex alternations to character classes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.20.0...2.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.15.0 to 2.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.15.1\u003c/h2\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/2.15.1/CHANGELOG.rst\"\u003e2.15.1 changelog\u003c/a\u003e for complete release details.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst\"\u003epyjwt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev2.15.1 \u0026lt;https://github.com/jpadilla/pyjwt/compare/2.15.0...2.15.1\u0026gt;\u003c/code\u003e__\u003c/h2\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Accept trailing Base64URL ``=`` padding when decoding JWS segments, so\n  tokens issued by AWS ALB and similar systems verify instead of raising\n  ``DecodeError: Invalid crypto padding``. Non-alphabet junk such as\n  ``!!!!`` remains rejected (`[#1209](https://github.com/jpadilla/pyjwt/issues/1209) \u0026lt;https://github.com/jpadilla/pyjwt/issues/1209\u0026gt;`__).\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/7d5ef55e42ce42221f58dc49943e92ccad1fa66a\"\u003e\u003ccode\u003e7d5ef55\u003c/code\u003e\u003c/a\u003e chore: prepare 2.15.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/7bf32526738fe837387bdedd4849a4a525c33a79\"\u003e\u003ccode\u003e7bf3252\u003c/code\u003e\u003c/a\u003e Accept canonical Base64URL padding in JWT segments (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1216\"\u003e#1216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.15.0...2.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `resend` from 2.25.0 to 2.49.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/resendlabs/resend-python/releases\"\u003eresend's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.49.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(webhooks): raise ValueError for non-ASCII signature in Webhooks.verify by \u003ca href=\"https://github.com/RaphaelFakhri\"\u003e\u003ccode\u003e@​RaphaelFakhri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/290\"\u003eresend/resend-python#290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RaphaelFakhri\"\u003e\u003ccode\u003e@​RaphaelFakhri\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/290\"\u003eresend/resend-python#290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.49.0...v2.49.1\"\u003ehttps://github.com/resend/resend-python/compare/v2.49.0...v2.49.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(webhooks): add support for topic and contact.topics.updated events by \u003ca href=\"https://github.com/joaopcm\"\u003e\u003ccode\u003e@​joaopcm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/291\"\u003eresend/resend-python#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joaopcm\"\u003e\u003ccode\u003e@​joaopcm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/291\"\u003eresend/resend-python#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.48.0...v2.49.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.48.0...v2.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(usage): add support for the GET /usage endpoint by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/289\"\u003eresend/resend-python#289\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.47.0...v2.48.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.47.0...v2.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(webhooks): add support for suppression.added/removed events by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/287\"\u003eresend/resend-python#287\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.46.0...v2.47.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.46.0...v2.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: run lint, mypy and tests on Python 3.12 to 3.14 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/285\"\u003eresend/resend-python#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump version to 2.46.0 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/286\"\u003eresend/resend-python#286\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.45.1...v2.46.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.45.1...v2.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.45.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: publish releases from GitHub Actions with PyPI trusted publishing by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/281\"\u003eresend/resend-python#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency python to 3.14 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/282\"\u003eresend/resend-python#282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve SDK errors for invalid JSON byte encodings by \u003ca href=\"https://github.com/Bortlesboat\"\u003e\u003ccode\u003e@​Bortlesboat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/276\"\u003eresend/resend-python#276\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: make Resend API errors picklable by \u003ca href=\"https://github.com/nickita-khylkouski\"\u003e\u003ccode\u003e@​nickita-khylkouski\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/278\"\u003eresend/resend-python#278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump version to 2.45.1 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/283\"\u003eresend/resend-python#283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: unpin flake8 so lint runs on Python 3.14 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/284\"\u003eresend/resend-python#284\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/4ce466ec3a0048589e695a59ed831011d97dfc25\"\u003e\u003ccode\u003e4ce466e\u003c/code\u003e\u003c/a\u003e fix(webhooks): raise ValueError for non-ASCII signature in Webhooks.verify (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/eac30cabe4fd7bf7b4c978018d5aa3f0590d6079\"\u003e\u003ccode\u003eeac30ca\u003c/code\u003e\u003c/a\u003e feat(webhooks): add support for topic and contact.topics.updated events (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/f6ad2bea554d07400e1a35026c9b66e226be518b\"\u003e\u003ccode\u003ef6ad2be\u003c/code\u003e\u003c/a\u003e feat(usage): add support for the GET /usage endpoint (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/390da5f92f9eb47d58ec230a4e500fab3045233b\"\u003e\u003ccode\u003e390da5f\u003c/code\u003e\u003c/a\u003e feat(webhooks): add support for suppression.added/removed events (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/fbc4223ce5c17bb1ff481c5e53740c45511ebfd2\"\u003e\u003ccode\u003efbc4223\u003c/code\u003e\u003c/a\u003e chore: bump version to 2.46.0 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/c4e18acc5cf0da10f95ab606b76def411885838e\"\u003e\u003ccode\u003ec4e18ac\u003c/code\u003e\u003c/a\u003e ci: run lint, mypy and tests on Python 3.12 to 3.14 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/23bc41504a73517c0a35a5908117591dea2067d2\"\u003e\u003ccode\u003e23bc415\u003c/code\u003e\u003c/a\u003e chore: unpin flake8 so lint runs on Python 3.14 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/284\"\u003e#284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/ee3760398f912fa521d700b08d6b6ce210893613\"\u003e\u003ccode\u003eee37603\u003c/code\u003e\u003c/a\u003e chore: bump version to 2.45.1 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/58be6dafcd63a08220b9b294bc2a5bb53a3e983b\"\u003e\u003ccode\u003e58be6da\u003c/code\u003e\u003c/a\u003e fix: make Resend API errors picklable (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/f758c75eadceae3a8006b14376c8e957e819706e\"\u003e\u003ccode\u003ef758c75\u003c/code\u003e\u003c/a\u003e fix: preserve SDK errors for invalid JSON byte encodings (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/276\"\u003e#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/resendlabs/resend-python/compare/v2.25.0...v2.49.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slowapi` from 0.1.9 to 0.1.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/laurents/slowapi/releases\"\u003eslowapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.1.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update warn to warning py3.11 deprecation by \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: allow Requests to be sent to exempt_when by \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: drop python 3.7 and 3.8 from CI checks by \u003ca href=\"https://github.com/laurentS\"\u003e\u003ccode\u003e@​laurentS\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/238\"\u003elaurentS/slowapi#238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: prepare 0.1.10 release by \u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\"\u003ehttps://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/laurentS/slowapi/blob/master/CHANGELOG.md\"\u003eslowapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.10] - 2026-06-13\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: allow usage of the request object in the except_when function (thanks \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded more test exemption logic (thanks \u003ca href=\"https://github.com/colin99\"\u003e\u003ccode\u003e@​colin99\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix logger warning for Python 3.11 deprecation  (thanks \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/75799a3ec9498af10110068190356f704f838fe3\"\u003e\u003ccode\u003e75799a3\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/6f22eabc90a793d8c8459b6a8115c6f7fbb05bc5\"\u003e\u003ccode\u003e6f22eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/212\"\u003e#212\u003c/a\u003e from ecly/release-v0.1.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/5e2b9c108f79471fc96a5152bb69774894660cd1\"\u003e\u003ccode\u003e5e2b9c1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/238\"\u003e#238\u003c/a\u003e from laurentS/drop-old-python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a83ec7211ea664fcb65580a386845832c112892d\"\u003e\u003ccode\u003ea83ec72\u003c/code\u003e\u003c/a\u003e Update README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/d1a20b6a4e0ba063bdb2160379be531c385c40a3\"\u003e\u003ccode\u003ed1a20b6\u003c/code\u003e\u003c/a\u003e Drop python 3.7 and 3.8 from CI checks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/8bf8b2ec55677aa3c9e0f9bed9f1a48f0b0b8d2e\"\u003e\u003ccode\u003e8bf8b2e\u003c/code\u003e\u003c/a\u003e Make exempt_when with request backwards compatible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/eaf5ba76cd8657693bcec6dec281a35053b1164b\"\u003e\u003ccode\u003eeaf5ba7\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a72bcc66597f620f04bf5be3676e40ed308d3a6a\"\u003e\u003ccode\u003ea72bcc6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/160\"\u003e#160\u003c/a\u003e from colin99d/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/42330fcddbf5ce22d18622ca14772cff256c2e74\"\u003e\u003ccode\u003e42330fc\u003c/code\u003e\u003c/a\u003e Merge branch 'laurentS:master' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/91145c087d658b6c3404935cd02155e291c2682b\"\u003e\u003ccode\u003e91145c0\u003c/code\u003e\u003c/a\u003e Fixed mypy error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/laurents/slowapi/compare/v0.1.9...v0.1.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.48 to 2.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.3\u003c/h1\u003e\n\u003cp\u003eReleased: October 2, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [regression]\u003c/strong\u003e Fixed regression where columns delivered to a mapped class from an\nunmapped \u003ccode\u003e_orm.MappedAsDataclass\u003c/code\u003e mixin, or from a class decorated\nwith \u003ccode\u003e_orm.unmapped_dataclass()\u003c/code\u003e, would not be placed in the\n\u003ccode\u003e_schema.Table\u003c/code\u003e in the order in which they were declared on the\nmixin; columns that had no dataclass default, such as a primary key column\nwith no \u003ccode\u003e_orm.mapped_column.default\u003c/code\u003e, or which made use of\n\u003ccode\u003e_orm.mapped_column.default_factory\u003c/code\u003e, would be moved after the\nremaining columns of the mixin.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13634\"\u003e#13634\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug] [regression]\u003c/strong\u003e Fixed regression caused by the new implementation of\n\u003ccode\u003eExecutableStatement.params()\u003c/code\u003e where parameter values established\nusing this method would not be rendered when compiling the statement with\nthe \u003ccode\u003eliteral_binds\u003c/code\u003e compiler option, instead rendering NULL with a\nwarning.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13635\"\u003e#13635\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.1.2\u003c/h1\u003e\n\u003cp\u003eReleased: October 2, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [regression]\u003c/strong\u003e Fixed regression caused by \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/5987\"\u003e#5987\u003c/a\u003e where the \u003ccode\u003eselectinload()\u003c/code\u003e\nloader strategy would ignore additional criteria present in the\n\u003ccode\u003e_orm.relationship.primaryjoin\u003c/code\u003e of a many-to-many relationship,\nsuch as a comparison against a column on the association table or on the\nparent table, loading related rows that should have been excluded.  The\n\u003ccode\u003eomit_join\u003c/code\u003e optimization for many-to-many relationships is now only used\nwhen the primar...\n\n_Description has been truncated_","html_url":"https://github.com/Yilmerher12/proyecto-verdeapp-adso/pull/445","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yilmerher12%2Fproyecto-verdeapp-adso/issues/445","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/445/packages"},{"uuid":"5835289744","node_id":"PR_kwDOQvxZUs8AAAABIO3ReA","number":116,"state":"closed","title":"chore(deps): bump the backend-production group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-10-13T18:32:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-13T18:06:20.000Z","updated_at":"2026-10-13T18:32:48.000Z","time_to_close":1585,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend-production","update_count":5,"packages":[{"name":"asyncpg","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"holidays","old_version":"0.104","new_version":"0.106","repository_url":"https://github.com/vacanza/holidays"},{"name":"svix","old_version":"2.5.0","new_version":"2.8.0","repository_url":"https://github.com/svix/svix-webhooks"},{"name":"uvicorn","old_version":"0.52.4","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-production group with 5 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.31.0` | `0.32.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [holidays](https://github.com/vacanza/holidays) | `0.104` | `0.106` |\n| [svix](https://github.com/svix/svix-webhooks) | `2.5.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.52.4` | `0.54.0` |\n\n\nUpdates `asyncpg` from 0.31.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1367\"\u003e#1367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 1b118464 and 58c0c595)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 8d2a5aed)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake pool \u003ccode\u003emin_size\u003c/code\u003e a maintained connection floor and add \u003ccode\u003einit_size\u003c/code\u003e to\ncontrol the number of connections opened at startup (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e).\nIdle connections at or below \u003ccode\u003emin_size\u003c/code\u003e are retained, and closed connections\nare replaced in the background. \u003ccode\u003einit_size\u003c/code\u003e defaults to \u003ccode\u003emin_size\u003c/code\u003e.\nTo preserve the previous behavior, where the pool could drain to zero,\nreplace \u003ccode\u003emin_size=N\u003c/code\u003e with \u003ccode\u003einit_size=N, min_size=0\u003c/code\u003e.\n(by \u003ca href=\"https://github.com/shatilov-diman\"\u003e\u003ccode\u003e@​shatilov-diman\u003c/code\u003e\u003c/a\u003e in 67a1cbc5)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003ehashlib.pbkdf2_hmac()\u003c/code\u003e for faster SCRAM password derivation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1359\"\u003e#1359\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/twelfthlabor\"\u003e\u003ccode\u003e@​twelfthlabor\u003c/code\u003e\u003c/a\u003e in 00319a9b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse the statement cache for \u003ccode\u003ecopy_records_to_table()\u003c/code\u003e introspection (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1360\"\u003e#1360\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/matemax\"\u003e\u003ccode\u003e@​matemax\u003c/code\u003e\u003c/a\u003e in dd058652)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClean up connections rejected by \u003ccode\u003etarget_session_attrs\u003c/code\u003e immediately so an\nunresponsive rejected host cannot delay the selected connection, and cleanup\ntasks cannot outlive the event loop. Rejected connections are aborted without\nwaiting for a graceful disconnect; servers may log \u0026quot;unexpected EOF on client\nconnection\u0026quot; if the Terminate message is not delivered before the transport\ncloses.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a connection pool deadlock when releasing a connection after a protocol\nabort (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1324\"\u003e#1324\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/pchaseh\"\u003e\u003ccode\u003e@​pchaseh\u003c/code\u003e\u003c/a\u003e in 4a83cc2f)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHonor \u003ccode\u003eConnection.close(timeout=...)\u003c/code\u003e while waiting for a pending\ncancellation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1361\"\u003e#1361\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in c06bcb4d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent stuck cancellation from blocking connection teardown or pool release\nby bounding cancellation with the command or release timeout (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1370\"\u003e#1370\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 4cf02203)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePreserve the server error when the connection closes mid-operation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1369\"\u003e#1369\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/RitiGrover\"\u003e\u003ccode\u003e@​RitiGrover\u003c/code\u003e\u003c/a\u003e in 6c8f1a7a)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix COPY cleanup when a records generator raises, preserving the original\nexception and avoiding protocol desynchronization and stalled rollback (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1358\"\u003e#1358\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/CodingCossack\"\u003e\u003ccode\u003e@​CodingCossack\u003c/code\u003e\u003c/a\u003e in fdc6bc8f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/d701e11a392b0e3b93b7af4a05c1cdadddf75f8f\"\u003e\u003ccode\u003ed701e11\u003c/code\u003e\u003c/a\u003e asyncpg v0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b04f8f299dd05c380e3c14d32bd1c881063c2b58\"\u003e\u003ccode\u003eb04f8f2\u003c/code\u003e\u003c/a\u003e Bump to macOS 26 in runners, set deployment target to 11 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1384\"\u003e#1384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/3934d77bfb558527a3708be686b6e0e7f90ce2b3\"\u003e\u003ccode\u003e3934d77\u003c/code\u003e\u003c/a\u003e tests: Capture expected pool retry warnings during role changes (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1383\"\u003e#1383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/2c3750179e0289b2fd03dc2baa8e87f75afa174b\"\u003e\u003ccode\u003e2c37501\u003c/code\u003e\u003c/a\u003e tests: Avoid DeprecationWarning when settings up uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1382\"\u003e#1382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b7eea79c920832d353073951c28aca687d532b4a\"\u003e\u003ccode\u003eb7eea79\u003c/code\u003e\u003c/a\u003e Test pool min_size backoff on target attribute mismatch (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1381\"\u003e#1381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/46dda9139700dc18e63ae638021edfaddf0bf3a4\"\u003e\u003ccode\u003e46dda91\u003c/code\u003e\u003c/a\u003e Terminate rejected target_session_attrs candidates before returning (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1380\"\u003e#1380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/8d2a5aedbf36c6116212454ebeb8c242140f76e5\"\u003e\u003ccode\u003e8d2a5ae\u003c/code\u003e\u003c/a\u003e Support PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/58c0c595272cb91b81be82620c479ab5431b4d70\"\u003e\u003ccode\u003e58c0c59\u003c/code\u003e\u003c/a\u003e Bump uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/67a1cbc5eb4a6aa5df140b27f48488921521d6f7\"\u003e\u003ccode\u003e67a1cbc\u003c/code\u003e\u003c/a\u003e Make pool min_size a maintained connection floor (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/25aaaf5412cf868388d076f359d12feb2479a4bb\"\u003e\u003ccode\u003e25aaaf5\u003c/code\u003e\u003c/a\u003e fix: allow cursors in external transactions (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.31.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `holidays` from 0.104 to 0.106\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vacanza/holidays/releases\"\u003eholidays's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.106\u003c/h2\u003e\n\u003ch2\u003eVersion 0.106\u003c/h2\u003e\n\u003cp\u003eReleased October 5, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bolsa de Valores de Colombia (BVC) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3845\"\u003e#3845\u003c/a\u003e by \u003ca href=\"https://github.com/Jsebastian323\"\u003e\u003ccode\u003e@​Jsebastian323\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Borsa Istanbul (BIST) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3858\"\u003e#3858\u003c/a\u003e by \u003ca href=\"https://github.com/priyen4\"\u003e\u003ccode\u003e@​priyen4\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/borsad\"\u003e\u003ccode\u003e@​borsad\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Warsaw Stock Exchange (GPW) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3837\"\u003e#3837\u003c/a\u003e by \u003ca href=\"https://github.com/Blizzeq\"\u003e\u003ccode\u003e@​Blizzeq\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Argentina holidays: add 2026 Visit of Pope Leo XIV holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3860\"\u003e#3860\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day (WA) and Eight Hours Day (TAS) start years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3846\"\u003e#3846\u003c/a\u003e by \u003ca href=\"https://github.com/ryanduguid\"\u003e\u003ccode\u003e@​ryanduguid\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day start years (ACT, QLD) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3832\"\u003e#3832\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Azerbaijan holidays: add substituted holidays from earlier years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3857\"\u003e#3857\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Bahrain holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3872\"\u003e#3872\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kuwait holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3873\"\u003e#3873\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malta holidays: add Arabic language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3849\"\u003e#3849\u003c/a\u003e by \u003ca href=\"https://github.com/moustafa-ash\"\u003e\u003ccode\u003e@​moustafa-ash\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Oman holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3870\"\u003e#3870\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Qatar holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3866\"\u003e#3866\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Saudi Arabia holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3865\"\u003e#3865\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Spain holidays: add Eid al-Fitr in Ceuta (CE) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3838\"\u003e#3838\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Turkmenistan holidays: add special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3847\"\u003e#3847\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate United Arab Emirates holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3864\"\u003e#3864\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Vietnam holidays: add Vietnam Cultural Day, 2025-2027 substituted holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3862\"\u003e#3862\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Warsaw Stock Exchange holidays: add Ukrainian language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3851\"\u003e#3851\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate iCalendar generation tool: add \u003ccode\u003e{all}\u003c/code\u003e placeholder to output template (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3829\"\u003e#3829\u003c/a\u003e by \u003ca href=\"https://github.com/Kanishka-v21\"\u003e\u003ccode\u003e@​Kanishka-v21\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReference maintenance: archive links (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3859\"\u003e#3859\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNew Contributors\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3832\"\u003evacanza/holidays#3832\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jsebastian323\"\u003e\u003ccode\u003e@​Jsebastian323\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3845\"\u003evacanza/holidays#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moustafa-ash\"\u003e\u003ccode\u003e@​moustafa-ash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3849\"\u003evacanza/holidays#3849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanduguid\"\u003e\u003ccode\u003e@​ryanduguid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3846\"\u003evacanza/holidays#3846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Blizzeq\"\u003e\u003ccode\u003e@​Blizzeq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3837\"\u003evacanza/holidays#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kanishka-v21\"\u003e\u003ccode\u003e@​Kanishka-v21\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3829\"\u003evacanza/holidays#3829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/priyen4\"\u003e\u003ccode\u003e@​priyen4\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3858\"\u003evacanza/holidays#3858\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vacanza/holidays/compare/v0.105...v0.106\"\u003ehttps://github.com/vacanza/holidays/compare/v0.105...v0.106\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.105\u003c/h2\u003e\n\u003ch2\u003eVersion 0.105\u003c/h2\u003e\n\u003cp\u003eReleased September 21, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor German School Holidays generator (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3808\"\u003e#3808\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactor imports in tests (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3819\"\u003e#3819\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add school holidays support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3821\"\u003e#3821\u003c/a\u003e by \u003ca href=\"https://github.com/gheydon\"\u003e\u003ccode\u003e@​gheydon\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Canada holidays: remove Boxing Day from optional holidays in QC (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3807\"\u003e#3807\u003c/a\u003e by \u003ca href=\"https://github.com/arbazkhan971\"\u003e\u003ccode\u003e@​arbazkhan971\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate India holidays: subdiv holidays improvement (East, North-East \u0026amp; South regions - I) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3784\"\u003e#3784\u003c/a\u003e by \u003ca href=\"https://github.com/ankushhKapoor\"\u003e\u003ccode\u003e@​ankushhKapoor\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Indonesia holidays: add 2027 special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3828\"\u003e#3828\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malaysia holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3814\"\u003e#3814\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Philippines holidays: add 2027 holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3817\"\u003e#3817\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vacanza/holidays/blob/dev/CHANGES.md\"\u003eholidays's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.106\u003c/h2\u003e\n\u003cp\u003eReleased October 5, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bolsa de Valores de Colombia (BVC) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3845\"\u003e#3845\u003c/a\u003e by \u003ca href=\"https://github.com/Jsebastian323\"\u003e\u003ccode\u003e@​Jsebastian323\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Borsa Istanbul (BIST) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3858\"\u003e#3858\u003c/a\u003e by \u003ca href=\"https://github.com/priyen4\"\u003e\u003ccode\u003e@​priyen4\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/borsad\"\u003e\u003ccode\u003e@​borsad\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Warsaw Stock Exchange (GPW) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3837\"\u003e#3837\u003c/a\u003e by \u003ca href=\"https://github.com/Blizzeq\"\u003e\u003ccode\u003e@​Blizzeq\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Argentina holidays: add 2026 Visit of Pope Leo XIV holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3860\"\u003e#3860\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day (WA) and Eight Hours Day (TAS) start years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3846\"\u003e#3846\u003c/a\u003e by \u003ca href=\"https://github.com/ryanduguid\"\u003e\u003ccode\u003e@​ryanduguid\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day start years (ACT, QLD) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3832\"\u003e#3832\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Azerbaijan holidays: add substituted holidays from earlier years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3857\"\u003e#3857\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Bahrain holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3872\"\u003e#3872\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kuwait holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3873\"\u003e#3873\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malta holidays: add Arabic language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3849\"\u003e#3849\u003c/a\u003e by \u003ca href=\"https://github.com/moustafa-ash\"\u003e\u003ccode\u003e@​moustafa-ash\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Oman holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3870\"\u003e#3870\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Qatar holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3866\"\u003e#3866\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Saudi Arabia holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3865\"\u003e#3865\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Spain holidays: add Eid al-Fitr in Ceuta (CE) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3838\"\u003e#3838\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Turkmenistan holidays: add special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3847\"\u003e#3847\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate United Arab Emirates holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3864\"\u003e#3864\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Vietnam holidays: add Vietnam Cultural Day, 2025-2027 substituted holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3862\"\u003e#3862\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Warsaw Stock Exchange holidays: add Ukrainian language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3851\"\u003e#3851\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate iCalendar generation tool: add \u003ccode\u003e{all}\u003c/code\u003e placeholder to output template (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3829\"\u003e#3829\u003c/a\u003e by \u003ca href=\"https://github.com/Kanishka-v21\"\u003e\u003ccode\u003e@​Kanishka-v21\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReference maintenance: archive links (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3859\"\u003e#3859\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.105\u003c/h2\u003e\n\u003cp\u003eReleased September 21, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor German School Holidays generator (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3808\"\u003e#3808\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactor imports in tests (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3819\"\u003e#3819\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add school holidays support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3821\"\u003e#3821\u003c/a\u003e by \u003ca href=\"https://github.com/gheydon\"\u003e\u003ccode\u003e@​gheydon\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Canada holidays: remove Boxing Day from optional holidays in QC (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3807\"\u003e#3807\u003c/a\u003e by \u003ca href=\"https://github.com/arbazkhan971\"\u003e\u003ccode\u003e@​arbazkhan971\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate India holidays: subdiv holidays improvement (East, North-East \u0026amp; South regions - I) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3784\"\u003e#3784\u003c/a\u003e by \u003ca href=\"https://github.com/ankushhKapoor\"\u003e\u003ccode\u003e@​ankushhKapoor\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Indonesia holidays: add 2027 special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3828\"\u003e#3828\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malaysia holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3814\"\u003e#3814\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Philippines holidays: add 2027 holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3817\"\u003e#3817\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate South Africa holidays: add Nov 4, 2026 holiday (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3809\"\u003e#3809\u003c/a\u003e by \u003ca href=\"https://github.com/lispwarez\"\u003e\u003ccode\u003e@​lispwarez\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for special holidays inheritance from parent entity (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3830\"\u003e#3830\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/arkid15r\"\u003e\u003ccode\u003e@​arkid15r\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/988414992d06a44a8b62584cfaa296a2c907ba56\"\u003e\u003ccode\u003e9884149\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3875\"\u003e#3875\u003c/a\u003e from vacanza/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/51ea00e2688359b691c77bd9a83137ae1fbf5c39\"\u003e\u003ccode\u003e51ea00e\u003c/code\u003e\u003c/a\u003e Finalize v0.106\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/d79e4f976411b5f53d7d8d018e53c64114897557\"\u003e\u003ccode\u003ed79e4f9\u003c/code\u003e\u003c/a\u003e Update Kuwait holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/5ac9ebe6ef27849f95cf9ab0a8f5f40a018f267e\"\u003e\u003ccode\u003e5ac9ebe\u003c/code\u003e\u003c/a\u003e Update Bahrain holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3872\"\u003e#3872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/4927d878c1d7bc37e3e3be0bd45308183866a4d9\"\u003e\u003ccode\u003e4927d87\u003c/code\u003e\u003c/a\u003e Update Oman holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3870\"\u003e#3870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/aabf782a7ff8a5e3fbffe0adabfa6f8dc6596074\"\u003e\u003ccode\u003eaabf782\u003c/code\u003e\u003c/a\u003e Update Azerbaijan holidays: add substituted holidays from earlier years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3857\"\u003e#3857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/77a58e77287b976f653a8f27c53b694ccb241520\"\u003e\u003ccode\u003e77a58e7\u003c/code\u003e\u003c/a\u003e Reference maintenance: archive links (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3859\"\u003e#3859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/d3d0e37c371d567d32e0d187982e85cf35aae194\"\u003e\u003ccode\u003ed3d0e37\u003c/code\u003e\u003c/a\u003e Update Argentina holidays: add 2026 Visit of Pope Leo XIV holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3860\"\u003e#3860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/173359e1b613748283345228074b7ea9ae39f43b\"\u003e\u003ccode\u003e173359e\u003c/code\u003e\u003c/a\u003e chore: Update snapshots (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3871\"\u003e#3871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/d16f2c2c05f07864dc167a270686b7d1c1c2471a\"\u003e\u003ccode\u003ed16f2c2\u003c/code\u003e\u003c/a\u003e Update Vietnam holidays: add Vietnam Cultural Day, 2025-2027 substituted holi...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vacanza/holidays/compare/v0.104...v0.106\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `svix` from 2.5.0 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/svix/svix-webhooks/releases\"\u003esvix's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSDKs + CLI v2.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: You can now populate a request body from a file by using cURL-style \u003ccode\u003e@filename\u003c/code\u003e syntax; e.g.,\n\u003ccode\u003esvix streaming events create strm_abcdef123456789 @filename.json\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Honor cancellation duration wait for retry (use \u003ccode\u003eTask.Delay\u003c/code\u003e instead of \u003ccode\u003eThread.Sleep\u003c/code\u003e)\nin \u003ccode\u003eAsync\u003c/code\u003e methods\u003c/li\u003e\n\u003cli\u003eLibs/Ruby: Fix \u003ccode\u003eSvix::Webhook.new_using_raw_bytes\u003c/code\u003e to actually accept raw key bytes instead of\nbase64 encoded bytes\u003c/li\u003e\n\u003cli\u003eLibs/Go: Make \u003ccode\u003esvix.Message().GetOrCreate()\u003c/code\u003e work by changing an accidental pointer receiver\n(inconsistent with all other methods) to a value receiver, and allow passing \u003ccode\u003enil\u003c/code\u003e for options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/guilhermeappel\"\u003e\u003ccode\u003e@​guilhermeappel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/svix/svix-webhooks/pull/2689\"\u003esvix/svix-webhooks#2689\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.7.0...v2.8.0\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.7.0...v2.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.7.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Return the new secret from \u003ccode\u003ev1.endpoint.rotate-secret\u003c/code\u003e, \u003ccode\u003ev1.destination.rotate-secret\u003c/code\u003e\nand \u003ccode\u003ev1.streaming.sink.rotate-secret\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Fix \u003ccode\u003eTimeoutMilliseconds\u003c/code\u003e option not being respected\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kdcokenny\"\u003e\u003ccode\u003e@​kdcokenny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/svix/svix-webhooks/pull/2679\"\u003esvix/svix-webhooks#2679\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.6.2...v2.7.0\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/(Java and Kotlin): Fix a bug that broke SDK methods where the underlying HTTP call\nuses a POST or PUT method and doesn't have any HTTP body parameters\u003c/li\u003e\n\u003cli\u003eLibs/Go: Fix module path such that v2 are properly released\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AdzerKI\"\u003e\u003ccode\u003e@​AdzerKI\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/svix/svix-webhooks/pull/2678\"\u003esvix/svix-webhooks#2678\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.6.1...v2.6.2\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.6.1...v2.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.6.1\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Update to latest Svix Cloud spec\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.6.0...v2.6.1\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.6.0...v2.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/PHP: Add support for \u003ccode\u003edestination\u003c/code\u003e and \u003ccode\u003estream\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eLibs/PHP: Add \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/Python \u003cstrong\u003e(Breaking)\u003c/strong\u003e: Drop support for Python 3.9 (EOL). Minimum supported version is now 3.10\u003c/li\u003e\n\u003cli\u003eLibs/Rust: Revert an accidental breaking change to \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e that made a couple methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/svix/svix-webhooks/blob/main/ChangeLog.md\"\u003esvix's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: You can now populate a request body from a file by using cURL-style \u003ccode\u003e@filename\u003c/code\u003e syntax; e.g.,\n\u003ccode\u003esvix streaming events create strm_abcdef123456789 @filename.json\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Honor cancellation duration wait for retry (use \u003ccode\u003eTask.Delay\u003c/code\u003e instead of \u003ccode\u003eThread.Sleep\u003c/code\u003e)\nin \u003ccode\u003eAsync\u003c/code\u003e methods\u003c/li\u003e\n\u003cli\u003eLibs/Ruby: Fix \u003ccode\u003eSvix::Webhook.new_using_raw_bytes\u003c/code\u003e to actually accept raw key bytes instead of\nbase64 encoded bytes\u003c/li\u003e\n\u003cli\u003eLibs/Go: Make \u003ccode\u003esvix.Message().GetOrCreate()\u003c/code\u003e work by changing an accidental pointer receiver\n(inconsistent with all other methods) to a value receiver, and allow passing \u003ccode\u003enil\u003c/code\u003e for options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.7.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Return the new secret from \u003ccode\u003ev1.endpoint.rotate-secret\u003c/code\u003e, \u003ccode\u003ev1.destination.rotate-secret\u003c/code\u003e\nand \u003ccode\u003ev1.streaming.sink.rotate-secret\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Fix \u003ccode\u003eTimeoutMilliseconds\u003c/code\u003e option not being respected\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.6.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/(Java and Kotlin): Fix a bug that broke SDK methods where the underlying HTTP call\nuses a POST or PUT method and doesn't have any HTTP body parameters\u003c/li\u003e\n\u003cli\u003eLibs/Go: Fix module path such that v2 are properly released\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Update to latest Svix Cloud spec\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/PHP: Add support for \u003ccode\u003edestination\u003c/code\u003e and \u003ccode\u003estream\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eLibs/PHP: Add \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/Python \u003cstrong\u003e(Breaking)\u003c/strong\u003e: Drop support for Python 3.9 (EOL). Minimum supported version is now 3.10\u003c/li\u003e\n\u003cli\u003eLibs/Rust: Revert an accidental breaking change to \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e that made a couple methods\nrequire unique access to the object (\u003ccode\u003e\u0026amp;mut self\u003c/code\u003e) instead of shared access (\u003ccode\u003e\u0026amp;self\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/8712f5818aff9f8ef9ffd57ca6c55cd975ff7301\"\u003e\u003ccode\u003e8712f58\u003c/code\u003e\u003c/a\u003e Publish SDKs + CLI v2.8.0 (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2692\"\u003e#2692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/f450286c2ec9906f0e24ccd3d90a33a22bd38789\"\u003e\u003ccode\u003ef450286\u003c/code\u003e\u003c/a\u003e go: Fix Application.GetOrCreate (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2691\"\u003e#2691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/6f230375f52e2b89f7141a9883af08f99158220a\"\u003e\u003ccode\u003e6f23037\u003c/code\u003e\u003c/a\u003e ruby: Use the bytes passed to Webhook.new_using_raw_bytes as the key (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2661\"\u003e#2661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/df5099aea9276ec9c77c12cb0de9d5fc5c1c3ff8\"\u003e\u003ccode\u003edf5099a\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump the development group in /python with 3 updates (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2690\"\u003e#2690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/e38b6e0c5d0c198904ce861d14906df04bb6ee3f\"\u003e\u003ccode\u003ee38b6e0\u003c/code\u003e\u003c/a\u003e csharp: Use Task.Delay between retries so cancellation is honored (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2689\"\u003e#2689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/48b58059ddc48509c390441e928d3ebb61454f9f\"\u003e\u003ccode\u003e48b5805\u003c/code\u003e\u003c/a\u003e cli: allow loading a request from a named file (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/adb3b5c4077c0f22bae2a2ab3b0d459ae0c14f8d\"\u003e\u003ccode\u003eadb3b5c\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump proxy-addr from 2.0.7 to 2.0.8 in /javascript (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2688\"\u003e#2688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/4710557d98b3d655ef8ee5ce5d1f4492b020fee1\"\u003e\u003ccode\u003e4710557\u003c/code\u003e\u003c/a\u003e build(deps): bump werkzeug from 3.1.8 to 3.1.9 in /python (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2687\"\u003e#2687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/d9f30585e34a172e3908d63abda38c19685ecdc5\"\u003e\u003ccode\u003ed9f3058\u003c/code\u003e\u003c/a\u003e Publish SDKs + CLI v2.7.0 (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2686\"\u003e#2686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/5114f175e00f4a2915d272a84fb4cac5b9929a57\"\u003e\u003ccode\u003e5114f17\u003c/code\u003e\u003c/a\u003e Update cloud spec and regenerate SDKs (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2684\"\u003e#2684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.5.0...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.52.4 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/ORIOP25/Cronos/pull/116","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORIOP25%2FCronos/issues/116","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/116/packages"},{"uuid":"5834589787","node_id":"PR_kwDOUXDMF88AAAABIOTIrg","number":17,"state":"open","title":"Bump the python group across 1 directory with 46 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-13T17:14:52.000Z","updated_at":"2026-10-14T20:33:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":46,"packages":[{"name":"django","old_version":"6.0.8","new_version":"6.1.2","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.19.2","new_version":"65.19.7","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.18.1","new_version":"3.18.3","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"hiredis","old_version":"3.4.1","new_version":"3.4.2","repository_url":"https://github.com/redis/hiredis-py"},{"name":"coverage","old_version":"7.16.0","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-upgrade","old_version":"1.32.0","new_version":"1.33.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djlint","old_version":"1.46.1","new_version":"1.46.4","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.16.6","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"werkzeug","old_version":"3.1.8","new_version":"3.1.9","repository_url":"https://github.com/pallets/werkzeug"},{"name":"ast-serialize","old_version":"0.11.2","new_version":"0.12.1","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"django-allauth","old_version":"65.19.2","new_version":"65.19.7","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-stubs","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-stubs-ext","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"docutils","old_version":"0.22.4","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"executing","old_version":"2.2.1","new_version":"2.3.0","repository_url":"https://github.com/alexmojaki/executing"},{"name":"faker","old_version":"40.38.0","new_version":"40.43.0","repository_url":"https://github.com/joke2k/faker"},{"name":"identify","old_version":"2.6.19","new_version":"2.6.20","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"json5","old_version":"0.15.0","new_version":"0.17.3","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"librt","old_version":"0.15.0","new_version":"0.16.0","repository_url":"https://github.com/mypyc/librt"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"nodeenv","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.11.8","new_version":"4.12.4","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"psycopg","old_version":"3.3.5","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.3.5","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-c","old_version":"3.3.5","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"python-discovery","old_version":"1.6.0","new_version":"1.6.2","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"rcssmin","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"regex","old_version":"2026.9.10","new_version":"2026.9.29","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rjsmin","old_version":"1.2.5","new_version":"1.3.0","repository_url":"https://github.com/ndparker/rjsmin"},{"name":"rpds-py","old_version":"2026.6.3","new_version":"2026.9.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tzdata","old_version":"2026.4","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.52.4","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"21.7.9","new_version":"21.14.6","repository_url":"https://github.com/pypa/virtualenv"},{"name":"watchfiles","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.8.3","new_version":"0.9.2","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websockets","old_version":"17.1","new_version":"17.2","repository_url":"https://github.com/python-websockets/websockets"},{"name":"werkzeug","old_version":"3.1.8","new_version":"3.1.9","repository_url":"https://github.com/pallets/werkzeug"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 46 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.8` | `6.1.2` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.19.2` | `65.19.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.18.1` | `3.18.3` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.1` | `3.4.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.16.0` | `7.16.2` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.1.0` | `6.1.2` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.32.0` | `1.33.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.46.1` | `1.46.4` |\n| [mypy](https://github.com/python/mypy) | `2.3.1` | `2.4.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.6` | `0.17.0` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.8` | `3.1.9` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.11.2` | `0.12.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.19.2` | `65.19.7` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.1.0` | `6.1.2` |\n| [django-stubs-ext](https://github.com/typeddjango/django-stubs) | `6.1.0` | `6.1.2` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.4` | `0.23` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.1` | `2.3.0` |\n| [faker](https://github.com/joke2k/faker) | `40.38.0` | `40.43.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.19` | `2.6.20` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.15.0` | `0.17.3` |\n| [librt](https://github.com/mypyc/librt) | `0.15.0` | `0.16.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.10.0` | `1.11.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.11.8` | `4.12.4` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.5` | `3.3.6` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.5` | `3.3.6` |\n| [psycopg-c](https://github.com/psycopg/psycopg) | `3.3.5` | `3.3.6` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.6.0` | `1.6.2` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.2.2` | `1.3.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.9.10` | `2026.9.29` |\n| [rjsmin](https://github.com/ndparker/rjsmin) | `1.2.5` | `1.3.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.6.3` | `2026.9.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tzdata](https://github.com/python/tzdata) | `2026.4` | `2026.5` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.52.4` | `0.54.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.7.9` | `21.14.6` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.2.0` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.3` | `0.9.2` |\n| [websockets](https://github.com/python-websockets/websockets) | `17.1` | `17.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.8` | `3.1.9` |\n\n\nUpdates `django` from 6.0.8 to 6.1.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2212534bae393714e1e51db2341d4fd5545e19f6\"\u003e\u003ccode\u003e2212534\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1.2 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/75d401a1491e04a907ed745c128836d51c982c0f\"\u003e\u003ccode\u003e75d401a\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs CVE-2026-15830 -- Fixed WKB geometry collection limit bypasses.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/cce6c57ed30ea83725f9d6abb2fe5ee932bab107\"\u003e\u003ccode\u003ecce6c57\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-87975 -- Prevented forging actions in model formsets w...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/4e77ef1e69c94780006b82795aa7db101996c3af\"\u003e\u003ccode\u003e4e77ef1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-87890 -- Blocked bytes in spatial lookups.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/de56deeabd4c48dfb5193f0001469d80102fb367\"\u003e\u003ccode\u003ede56dee\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-84429 -- Simplified parse_header_parameters by leverag...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/7e878b0f8bd42260903e6a0d38996a93b0474a0b\"\u003e\u003ccode\u003e7e878b0\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-77050 -- Prevented memory exhaustion in get_supported_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/d8cf296d9668e146067337c6f2259be6ea2c7370\"\u003e\u003ccode\u003ed8cf296\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37322\"\u003e#37322\u003c/a\u003e -- Avoided transforms on spatial fields with srid=None.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/71084d68d3be55307be6698a7cff93244f98ad88\"\u003e\u003ccode\u003e71084d6\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37377\"\u003e#37377\u003c/a\u003e -- Fixed JSONField __in crash/wrong result for Value() p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/e34d77639cebc30b13bbbb82b04f97ba0da82cb4\"\u003e\u003ccode\u003ee34d776\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37386\"\u003e#37386\u003c/a\u003e -- Observed delete_confirmation_max_display=0 for inlines.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/25872ef34ee19f49887509138218fc08320f526c\"\u003e\u003ccode\u003e25872ef\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37361\"\u003e#37361\u003c/a\u003e -- Fixed permission renames for chained RenameModel oper...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.8...6.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.19.2 to 65.19.7\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.18.1 to 3.18.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eorder_by_precedence\u003c/code\u003e from 3.18.1 to fix broken return value by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10066\"\u003eencode/django-rest-framework#10066\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.18.2...3.18.3\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.18.2...3.18.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.18.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGHSA-33wh-fxxf-88vv: Harden content negotiation against large \u003ccode\u003eAccept\u003c/code\u003e headers by \u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/148ab65\"\u003e148ab65\u003c/a\u003e. Thanks \u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e for the report.\u003c/li\u003e\n\u003cli\u003eGHSA-3547-9m27-7rxg: Refuse non-text encoding charsets by \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/3c26345\"\u003e3c26345\u003c/a\u003e. Thanks \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e who both reported the problem.\u003c/li\u003e\n\u003cli\u003eGHSA-xw6w-gcfp-cf8m: Make \u003ccode\u003eTokenProxy\u003c/code\u003e deletion actually delete the token by \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/af3fabf\"\u003eaf3fabf\u003c/a\u003e. Thanks \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e for the report.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.15 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10025\"\u003eencode/django-rest-framework#10025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eblank=True\u003c/code\u003e fields in unique constraints being treated as required by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10039\"\u003eencode/django-rest-framework#10039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueConstraint\u003c/code\u003e validation with conditional fields by \u003ca href=\"https://github.com/majidkhazaei\"\u003e\u003ccode\u003e@​majidkhazaei\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10021\"\u003eencode/django-rest-framework#10021\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/olitreadwell\"\u003e\u003ccode\u003e@​olitreadwell\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10038\"\u003eencode/django-rest-framework#10038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majidkhazaei\"\u003e\u003ccode\u003e@​majidkhazaei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10021\"\u003eencode/django-rest-framework#10021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rblotsky\"\u003e\u003ccode\u003e@​rblotsky\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10045\"\u003eencode/django-rest-framework#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrchatam\"\u003e\u003ccode\u003e@​mrchatam\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10042\"\u003eencode/django-rest-framework#10042\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haimingZZ\"\u003e\u003ccode\u003e@​haimingZZ\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10052\"\u003eencode/django-rest-framework#10052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/148ab65\"\u003e148ab65\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/3c26345\"\u003e3c26345\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.18.1...3.18.2\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.18.1...3.18.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/1af5b55758ac514c492ed3a5fc1a6fb244cdb257\"\u003e\u003ccode\u003e1af5b55\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.3 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10067\"\u003e#10067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e140de794d11149a09c04a3ee7cc4815946148f8\"\u003e\u003ccode\u003ee140de7\u003c/code\u003e\u003c/a\u003e Restore order_by_precedence from 3.18.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10066\"\u003e#10066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7195f7e4c51527054623ea55fc4491786acc91f8\"\u003e\u003ccode\u003e7195f7e\u003c/code\u003e\u003c/a\u003e Bump the pre-commit group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10063\"\u003e#10063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69694a17d0b6ac14b4ea4d77916b73c68dc5a3e8\"\u003e\u003ccode\u003e69694a1\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.2 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10065\"\u003e#10065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/af3fabfd517307fbc5d500fba1ab8f6e25f220b0\"\u003e\u003ccode\u003eaf3fabf\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/3c2634599b26a9f789b03045118dbc276117611a\"\u003e\u003ccode\u003e3c26345\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/148ab6523922d5a0c110f76615935e5220b63029\"\u003e\u003ccode\u003e148ab65\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/3d18900ead34e9491f94597617a12fdd47161e97\"\u003e\u003ccode\u003e3d18900\u003c/code\u003e\u003c/a\u003e Fix CI that broke due to latest Django bugfix (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10064\"\u003e#10064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d6c45646edc9c6644ea159f7f786da598bc1ab66\"\u003e\u003ccode\u003ed6c4564\u003c/code\u003e\u003c/a\u003e Improve teardown of test modifying INSTALLED_APPS (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10056\"\u003e#10056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/41764f1f8cfb6d40b77b58c97cf9aeaab57c6b5c\"\u003e\u003ccode\u003e41764f1\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action in the github-actions group (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10058\"\u003e#10058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.18.1...3.18.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.1 to 3.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.2\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release. Users of hiredis-py 3.4.x that receive RESP3 push notifications — pub/sub deliveries or client-side cache invalidations — are encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🐛 Bug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRelease the list each push notification is sized from (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003ePushNotificationType_New\u003c/code\u003e pre-sized every \u003ccode\u003ePushNotification\u003c/code\u003e with a list that \u003ccode\u003ePyList_SetSlice\u003c/code\u003e only borrows, and the reference was never dropped. Each RESP3 push notification therefore stranded one list object for the lifetime of the process. Because push notifications carry pub/sub deliveries and client-side caching invalidations, the leak grew with \u003cem\u003emessage volume\u003c/em\u003e rather than with the number of connections, making it unbounded for a long-lived subscriber — roughly 20 MB per 200,000 four-element notifications, and more for larger ones. Dropping the reference also removes an allocation from the parse path, which makes parsing a small notification about 10% faster.\u003c/p\u003e\n\u003cp\u003eThe same change checks \u003ccode\u003ePyList_New\u003c/code\u003e for failure and guards \u003ccode\u003etryParentize\u003c/code\u003e against a \u003ccode\u003eNULL\u003c/code\u003e reply, so an allocation failure is now reported as an error instead of writing elements past the end of a zero-length notification.\u003c/p\u003e\n\u003cp\u003eRESP2 array replies were never affected.\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/mmick78\"\u003e\u003ccode\u003e@​mmick78\u003c/code\u003e\u003c/a\u003e for finding and fixing this.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b1b29513f005fbd2554711c1ed051a04b424283c\"\u003e\u003ccode\u003eb1b2951\u003c/code\u003e\u003c/a\u003e [3.4] Release the list each push notification is sized from, release 3.4.2 (#...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.1...v3.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.16.0 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.16.0...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.1.0 to 6.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003emypy@2.4\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLoosen \u003ccode\u003eWidget.format_value\u003c/code\u003e and remove override ignores by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3643\"\u003etypeddjango/django-stubs#3643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003email: Accept smtp timeout as float by \u003ca href=\"https://github.com/9128305\"\u003e\u003ccode\u003e@​9128305\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3656\"\u003etypeddjango/django-stubs#3656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix lookup expected type for transform chains (e.g. start_date__year__in) by \u003ca href=\"https://github.com/manysuq\"\u003e\u003ccode\u003e@​manysuq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3655\"\u003etypeddjango/django-stubs#3655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow a sequence of ActionLocation in admin.action's location by \u003ca href=\"https://github.com/knyghty\"\u003e\u003ccode\u003e@​knyghty\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3661\"\u003etypeddjango/django-stubs#3661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9128305\"\u003e\u003ccode\u003e@​9128305\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3656\"\u003etypeddjango/django-stubs#3656\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.1.1...6.1.2\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.1.1...6.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.1.1\u003c/h2\u003e\n\u003ch2\u003eHighlight\u003c/h2\u003e\n\u003cp\u003eThis release does some changes around \u003ccode\u003eManager\u003c/code\u003e / \u003ccode\u003eRelatedManager\u003c/code\u003e and the auto generated \u003ccode\u003eobjects\u003c/code\u003e attribute to work better with typechecker like pyright / ty / pyrefly and be more strict about the fact that \u003ccode\u003eMyModel().objects\u003c/code\u003e is not valid.\u003c/p\u003e\n\u003cp\u003eHowever, to support that, existing broad annotations of related managers need to be narrowed or access to these related managers will be flagged as an error. For ex:\u003c/p\u003e\n\u003cpre lang=\"diff\"\u003e\u003ccode\u003efrom django.db import models\r\nfrom django_stubs_ext.db.models.manager import ManyRelatedManager, RelatedManager\r\n\u003cp\u003eclass Article(models.Model):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ecategory_set: Manager[Category]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003ecategory_set: RelatedManager[Category]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003etags: Manager[Tag, ArticleTag]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003etags: ManyRelatedManager[Tag, ArticleTag]\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you use the mypy plugin, you should also be able to drop these annotation completely in most cases. The plugin infers these types automatically.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/typeddjango/django-stubs#do-i-need-to-annotate-reverse-relations\"\u003ehttps://github.com/typeddjango/django-stubs#do-i-need-to-annotate-reverse-relations\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix revealed type for DistanceField and AreaField by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3587\"\u003etypeddjango/django-stubs#3587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow database variants in on_delete for related fields. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3591\"\u003etypeddjango/django-stubs#3591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bogus name-defined error for cross-module as_manager overrides by \u003ca href=\"https://github.com/BenA-SA\"\u003e\u003ccode\u003e@​BenA-SA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3597\"\u003etypeddjango/django-stubs#3597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix monkeypatch() erasing parametrization of real Generic subclasses by \u003ca href=\"https://github.com/mylittletraf\"\u003e\u003ccode\u003e@​mylittletraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3610\"\u003etypeddjango/django-stubs#3610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't build a ManyRelatedManager from a placeholder _Through by \u003ca href=\"https://github.com/codebreach\"\u003e\u003ccode\u003e@​codebreach\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3608\"\u003etypeddjango/django-stubs#3608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnnotate \u003ccode\u003eFileField.save_form_data\u003c/code\u003e by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3606\"\u003etypeddjango/django-stubs#3606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisallow \u003ccode\u003eNone\u003c/code\u003e passed to \u003ccode\u003eFileField.generate_filename\u003c/code\u003e by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3607\"\u003etypeddjango/django-stubs#3607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd overloads for \u003ccode\u003eassertTemplateUsed\u003c/code\u003e and \u003ccode\u003eassertTemplateNotUsed\u003c/code\u003e by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3564\"\u003etypeddjango/django-stubs#3564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd defaults to the form type parameters of generic editing views by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3615\"\u003etypeddjango/django-stubs#3615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve objects through the metaclass and ban manager access on instances by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3593\"\u003etypeddjango/django-stubs#3593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003esetter\u003c/code\u003e in \u003ccode\u003ehashers.check_password\u003c/code\u003e better by \u003ca href=\"https://github.com/Kakadus\"\u003e\u003ccode\u003e@​Kakadus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3621\"\u003etypeddjango/django-stubs#3621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003eAbstractBaseUser.natural_key\u003c/code\u003e return type by \u003ca href=\"https://github.com/Kakadus\"\u003e\u003ccode\u003e@​Kakadus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3622\"\u003etypeddjango/django-stubs#3622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e@admin.display\u003c/code\u003e overload to specify \u003ccode\u003efunction\u003c/code\u003e by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3620\"\u003etypeddjango/django-stubs#3620\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/fa03b48b8cdfe336065f5ad8eb51fbcc40c6b1d2\"\u003e\u003ccode\u003efa03b48\u003c/code\u003e\u003c/a\u003e Version 6.1.2 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/3568355bc144517b793f360884ea500f8c4c8352\"\u003e\u003ccode\u003e3568355\u003c/code\u003e\u003c/a\u003e Update dependency mypy to \u0026gt;=1.13,\u0026lt;2.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/46cd7de1d2f48ecf9727992e4c7ce114d3f98b8f\"\u003e\u003ccode\u003e46cd7de\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v1.3.2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/de0b49c8fb5d82bb2d5ab86ab4e4a92430a3893b\"\u003e\u003ccode\u003ede0b49c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c7b59a09461784a6ec07704fcfc67391f7e8000d\"\u003e\u003ccode\u003ec7b59a0\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.83 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3671\"\u003e#3671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e3a1189abb30e181d2e68fd6dd3cb868505dd584\"\u003e\u003ccode\u003ee3a1189\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.2.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3672\"\u003e#3672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f0a186a2e272abcfdbd01e3f774c46afff9cd208\"\u003e\u003ccode\u003ef0a186a\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.75.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/63161efeb94263520bed6fb6fb1023844b4b5872\"\u003e\u003ccode\u003e63161ef\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/dc0185492a5a26c64d8fc67278580ea5eb911c3f\"\u003e\u003ccode\u003edc01854\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.6 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d563832a021a84d56592e2828d054e56572421cb\"\u003e\u003ccode\u003ed563832\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.82 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.1.0...6.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.32.0 to 1.33.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.33.0 (2026-10-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eReduce garbage collection frequency while fixing files, yielding a performance improvement of 2-7%, depending on Python version.\nMeasured on the source code of Django, Saleor, Wagtail, and Zulip, with no changes to make, the median speedups were ~7% on Python 3.11, ~3% on Python 3.13, and ~2% on Python 3.14, with no change in peak memory usage.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#735](https://github.com/adamchainz/django-upgrade/issues/735) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/735\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSpeed up the AST traversal by skipping fields that never contain nodes for fixers, such as expression contexts, yielding a further performance improvement of 3-7% on the same projects.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#736](https://github.com/adamchainz/django-upgrade/issues/736) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/736\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOnly call fixers for function calls, names, and attributes with names they handle, yielding a further performance improvement of 23-29% on the same projects.\nCombined with the above changes, django-upgrade is now 27-38% faster on these projects.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#737](https://github.com/adamchainz/django-upgrade/issues/737) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/737\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/5ccd385680292c5e5b10bedf0a3e509b5e6e9da8\"\u003e\u003ccode\u003e5ccd385\u003c/code\u003e\u003c/a\u003e Version 1.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/1d134cf353066b9cb281d45e88efd01c75f0de27\"\u003e\u003ccode\u003e1d134cf\u003c/code\u003e\u003c/a\u003e Add links to changelog notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/8dc2dbac056bf44b3487e68dfa57e45d84a56766\"\u003e\u003ccode\u003e8dc2dba\u003c/code\u003e\u003c/a\u003e Dispatch fixer callbacks by name (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7c4ff49d3870c6b746cf2ca11c89aaadff359ee8\"\u003e\u003ccode\u003e7c4ff49\u003c/code\u003e\u003c/a\u003e Speed up AST traversal in \u003ccode\u003evisit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/f2edbc3b0eaa517f1c36732c475007c700356191\"\u003e\u003ccode\u003ef2edbc3\u003c/code\u003e\u003c/a\u003e Reduce garbage collection frequency while fixing (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/735\"\u003e#735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4580ebd9bf9fb9bcb89c3f61aceff21c4a9c74ab\"\u003e\u003ccode\u003e4580ebd\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/734\"\u003e#734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/0c01d574b5cda79327614493c20fbefaf6f9fc49\"\u003e\u003ccode\u003e0c01d57\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/592d36791b845dba8d0333f5c1f05289baf5a075\"\u003e\u003ccode\u003e592d367\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.32.0...1.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.46.1 to 1.46.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.46.4\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA line that opens a template block now indents the lines inside it when the rest of the line looks like a single-line html tag. Before, html in a string argument, as in \u003ccode\u003e{% call modal(\u0026quot;\u0026lt;strong\u0026gt;\u0026quot; ~ n ~ \u0026quot;\u0026lt;/strong\u0026gt;\u0026quot;) %}\u003c/code\u003e, or inline html right after the opening tag, as in \u003ccode\u003e{% if a %}\u0026lt;b\u0026gt;x\u0026lt;/b\u0026gt;\u003c/code\u003e, left the block's contents at its own level, and its closing tag ended up one level too far out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.46.3\u003c/h2\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA long run of unclosed \u003ccode\u003e{{\u003c/code\u003e or \u003ccode\u003e{%\u003c/code\u003e no longer makes linting and formatting quadratic. Each was read again from every opener to the end of the line or the file, so eight thousand \u003ccode\u003e{{\u003c/code\u003e on one line took over half a minute to lint and as long again to format, and twenty thousand in one attribute value took \u003ccode\u003eH054\u003c/code\u003e alone 80 seconds; each now takes well under a second. A second opener is taken to mean the first one never closed, which is how the tokenizer already read them. \u003ccode\u003eT038\u003c/code\u003e still reads an unclosed \u003ccode\u003e{%\u003c/code\u003e up to the next \u003ccode\u003e%}\u003c/code\u003e, as django does, so a run of those stays slow there.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA \u003ccode\u003e\u0026gt;\u003c/code\u003e inside a string of a template tag no longer ends the html tag around it when the string reuses the attribute's quote, as in \u003ccode\u003eclass=\u0026quot;{{ classes|default:\u0026quot;[\u0026amp;\u0026gt;a]:flex\u0026quot; }}\u0026quot;\u003c/code\u003e. Before, the linter lost the rest of the tag, so \u003ccode\u003eH037\u003c/code\u003e missed a repeated attribute after it, and the formatter put a line break inside the string.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH054\u003c/code\u003e no longer reads an attribute out of a \u003ccode\u003e{# #}\u003c/code\u003e comment in another attribute's value, as in \u003ccode\u003e\u0026lt;a title=\u0026quot;{# \u0026quot; href #}\u0026quot;\u0026gt;\u003c/code\u003e, and leaves an input alone when an \u003ccode\u003e{% if %}\u003c/code\u003e writes its type and another tag writes the value, as in \u003ccode\u003e{% if shown %}type=\u0026quot;{% if hidden %}hidden{% else %}text{% endif %}\u0026quot;{% endif %}\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003e{#\u003c/code\u003e inside a \u003ccode\u003e{{ }}\u003c/code\u003e or \u003ccode\u003e{% %}\u003c/code\u003e tag, as in \u003ccode\u003e{{ \u0026quot;{# x\u0026quot; }}\u003c/code\u003e or an ICU message such as \u003ccode\u003e{n, plural, one {# item} other {# items}}\u003c/code\u003e, no longer opens a comment that runs to the next \u003ccode\u003e#}\u003c/code\u003e in the file. Before, the linter skipped everything in between, so \u003ccode\u003eT038\u003c/code\u003e reported the \u003ccode\u003e{% if %}\u003c/code\u003e before it as unclosed and \u003ccode\u003eT041\u003c/code\u003e missed an \u003ccode\u003e{% extends %}\u003c/code\u003e after it, and the formatter left the lines in between unformatted. A tag ends at its first closing delimiter, which is where django ends it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.46.2\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEach option on the configuration page now carries the release that brought it, so a reader held to an older djLint can tell at a glance what is there to reach for. The page's filter searches the versions too.\u003c/li\u003e\n\u003cli\u003edjLint publishes its own json schema at \u003ca href=\"https://djlint.com/schema/djlint.json\"\u003ehttps://djlint.com/schema/djlint.json\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum required regex version is lowered from 2022.6.2 back to 2021.8.21, the first release that ships wheels for Python 3.10, which is djLint's own minimum.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/blob/master/CHANGELOG.md\"\u003edjlint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.46.4] - 2026-10-01\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA line that opens a template block now indents the lines inside it when the rest of the line looks like a single-line html tag. Before, html in a string argument, as in \u003ccode\u003e{% call modal(\u0026quot;\u0026lt;strong\u0026gt;\u0026quot; ~ n ~ \u0026quot;\u0026lt;/strong\u0026gt;\u0026quot;) %}\u003c/code\u003e, or inline html right after the opening tag, as in \u003ccode\u003e{% if a %}\u0026lt;b\u0026gt;x\u0026lt;/b\u0026gt;\u003c/code\u003e, left the block's contents at its own level, and its closing tag ended up one level too far out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.46.3] - 2026-09-28\u003c/h2\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA long run of unclosed \u003ccode\u003e{{\u003c/code\u003e or \u003ccode\u003e{%\u003c/code\u003e no longer makes linting and formatting quadratic. Each was read again from every opener to the end of the line or the file, so eight thousand \u003ccode\u003e{{\u003c/code\u003e on one line took over half a minute to lint and as long again to format, and twenty thousand in one attribute value took \u003ccode\u003eH054\u003c/code\u003e alone 80 seconds; each now takes well under a second. A second opener is taken to mean the first one never closed, which is how the tokenizer already read them. \u003ccode\u003eT038\u003c/code\u003e still reads an unclosed \u003ccode\u003e{%\u003c/code\u003e up to the next \u003ccode\u003e%}\u003c/code\u003e, as django does, so a run of those stays slow there.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA \u003ccode\u003e\u0026gt;\u003c/code\u003e inside a string of a template tag no longer ends the html tag around it when the string reuses the attribute's quote, as in \u003ccode\u003eclass=\u0026quot;{{ classes|default:\u0026quot;[\u0026amp;\u0026gt;a]:flex\u0026quot; }}\u0026quot;\u003c/code\u003e. Before, the linter lost the rest of the tag, so \u003ccode\u003eH037\u003c/code\u003e missed a repeated attribute after it, and the formatter put a line break inside the string.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH054\u003c/code\u003e no longer reads an attribute out of a \u003ccode\u003e{# #}\u003c/code\u003e comment in another attribute's value, as in \u003ccode\u003e\u0026lt;a title=\u0026quot;{# \u0026quot; href #}\u0026quot;\u0026gt;\u003c/code\u003e, and leaves an input alone when an \u003ccode\u003e{% if %}\u003c/code\u003e writes its type and another tag writes the value, as in \u003ccode\u003e{% if shown %}type=\u0026quot;{% if hidden %}hidden{% else %}text{% endif %}\u0026quot;{% endif %}\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003e{#\u003c/code\u003e inside a \u003ccode\u003e{{ }}\u003c/code\u003e or \u003ccode\u003e{% %}\u003c/code\u003e tag, as in \u003ccode\u003e{{ \u0026quot;{# x\u0026quot; }}\u003c/code\u003e or an ICU message such as \u003ccode\u003e{n, plural, one {# item} other {# items}}\u003c/code\u003e, no longer opens a comment that runs to the next \u003ccode\u003e#}\u003c/code\u003e in the file. Before, the linter skipped everything in between, so \u003ccode\u003eT038\u003c/code\u003e reported the \u003ccode\u003e{% if %}\u003c/code\u003e before it as unclosed and \u003ccode\u003eT041\u003c/code\u003e missed an \u003ccode\u003e{% extends %}\u003c/code\u003e after it, and the formatter left the lines in between unformatted. A tag ends at its first closing delimiter, which is where django ends it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.46.2] - 2026-09-19\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEach option on the configuration page now carries the release that brought it, so a reader held to an older djLint can tell at a glance what is there to reach for. The page's filter searches the versions too.\u003c/li\u003e\n\u003cli\u003edjLint publishes its own json schema at \u003ca href=\"https://djlint.com/schema/djlint.json\"\u003ehttps://djlint.com/schema/djlint.json\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum required regex version is lowered from 2022.6.2 back to 2021.8.21, the first release that ships wheels for Python 3.10, which is djLint's own minimum.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/97266b950ee135d6ef89c9ace9d88baadced6f67\"\u003e\u003ccode\u003e97266b9\u003c/code\u003e\u003c/a\u003e chore(deps): update pre-commit hook tombi-toml/tombi-pre-commit to v1.5.6 (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/5f40a434241d69428152cada7a63f3e25d19582e\"\u003e\u003ccode\u003e5f40a43\u003c/code\u003e\u003c/a\u003e v1.46.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/47128e081ee74481e5c7386f3e3739158c3c09b1\"\u003e\u003ccode\u003e47128e0\u003c/code\u003e\u003c/a\u003e fix: indent under a block opener that holds inline html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/afe85bc3358ddc5d7ceb1af9ecf12bbb6491047e\"\u003e\u003ccode\u003eafe85bc\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2583\"\u003e#2583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/257c30fb1ddf311eb9b82658cc0d5adad4c90857\"\u003e\u003ccode\u003e257c30f\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2582\"\u003e#2582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/f1db0c54ccd6bc1934640e09cf977a640adcb0e5\"\u003e\u003ccode\u003ef1db0c5\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2581\"\u003e#2581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/0fe43b78ec51686f2db7167e311d4293fd0680cd\"\u003e\u003ccode\u003e0fe43b7\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2580\"\u003e#2580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/df19d81c59b0b15585e5ae3144952a2903646210\"\u003e\u003ccode\u003edf19d81\u003c/code\u003e\u003c/a\u003e v1.46.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/83a1c0fc483e7ba7e3efd5a39bced6c681007ae7\"\u003e\u003ccode\u003e83a1c0f\u003c/code\u003e\u003c/a\u003e perf: stop reading a template tag at the next opener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/6ab9892a68620a0bdcc4e2ff964f84069689e65a\"\u003e\u003ccode\u003e6ab9892\u003c/code\u003e\u003c/a\u003e perf: read a run of unclosed template openers once\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/djlint/djLint/compare/v1.46.1...v1.46.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.3.1 to 2.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.4\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.4.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003ePython 3.15 Support\u003c/h3\u003e\n\u003cp\u003eMypy 2.4 supports running on Python 3.15 and type checking most Python\n3.15 features. This includes the new builtin \u003ccode\u003esentinel\u003c/code\u003e type for\nsentinel values (PEP 661), which mypy now supports (see below for\ndetails). Lazy imports (PEP 810) and unpacking in comprehensions\n(PEP 798) are also supported. Closed TypedDicts (PEP 728) have been\nsupported since mypy 2.2, but the \u003ccode\u003eextra_items\u003c/code\u003e TypedDict argument,\nalso introduced in PEP 728, is still unsupported. Support for\n\u003ccode\u003eextra_items\u003c/code\u003e will be added in a future mypy release.\u003c/p\u003e\n\u003ch3\u003eNative Parser Enabled by Default\u003c/h3\u003e\n\u003cp\u003eMypy now uses the new native parser by default. It's based on the Ruff\nparser, and it's significantly faster than the legacy parser, which\nuses the stdlib \u003ccode\u003east\u003c/code\u003e module. The native parser also has other\nbenefits:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou can target newer Python versions and use recent Python syntax\neven when running mypy on an older Python version. For example, you\ncan use \u003ccode\u003e--python-version 3.15\u003c/code\u003e when running mypy on Python 3.14.\u003c/li\u003e\n\u003cli\u003eStub files can use syntax that is newer than the target Python\nversion. For example, stubs can use the PEP 695 generic class syntax\n(\u003ccode\u003eclass Box[T]: ...\u003c/code\u003e) when running on or targeting Python 3.10.\u003c/li\u003e\n\u003cli\u003eParallel type checking requires the native parser.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe legacy parser is still available through \u003ccode\u003e--no-native-parser\u003c/code\u003e, or\n\u003ccode\u003enative_parser = False\u003c/code\u003e in the config file (\u003ccode\u003enative_parser = false\u003c/code\u003e\nunder \u003ccode\u003e[tool.mypy]\u003c/code\u003e in pyproject.toml). We are planning to remove the\nlegacy parser in early 2027. If you run into a problem with the native\nparser, please report it on the\n\u003ca href=\"https://github.com/python/mypy/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eUnlike the legacy parser, the native parser doesn't support type\ncomments for variables defined by \u003ccode\u003efor\u003c/code\u003e and \u003ccode\u003ewith\u003c/code\u003e statements. These\ntype comments are silently ignored, and the types of the variables are\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/935ba8afba7ceacca0651579450c74339f343016\"\u003e\u003ccode\u003e935ba8a\u003c/code\u003e\u003c/a\u003e Bump version to 2.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/334a678967dc6bcda3d3f8cb82e253dd61fa2be9\"\u003e\u003ccode\u003e334a678\u003c/code\u003e\u003c/a\u003e Add link for PR 22066 in mypy 2.4 changelog (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22082\"\u003e#22082\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/fe69660bcdaa76cccb1aedbb4b9c1c7627215571\"\u003e\u003ccode\u003efe69660\u003c/code\u003e\u003c/a\u003e Finalize mypy 2.4 changelog (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22080\"\u003e#22080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/541fd87ac53581fb3c511b277fd780ec4e869c95\"\u003e\u003ccode\u003e541fd87\u003c/code\u003e\u003c/a\u003e Various mypy 2.4 changelog updates (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22077\"\u003e#22077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b231182c0b2993918f74594236bda7d3ec6fcbe5\"\u003e\u003ccode\u003eb231182\u003c/code\u003e\u003c/a\u003e Update native parser docs (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22078\"\u003e#22078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/04fe42ce217f120a4de2c1fd62b71ef77452d699\"\u003e\u003ccode\u003e04fe42c\u003c/code\u003e\u003c/a\u003e Initial Changelog for Mypy 2.4 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22071\"\u003e#22071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/06174941bca0e88567441ee3cb0ffaef0dd22e2c\"\u003e\u003ccode\u003e0617494\u003c/code\u003e\u003c/a\u003e Quick fix for non UTF-8 encodings with new parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22066\"\u003e#22066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b2f9b60eae5ac7cd9c6a60650b128815bb703daf\"\u003e\u003ccode\u003eb2f9b60\u003c/code\u003e\u003c/a\u003e Bump librt to 0.16.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22067\"\u003e#22067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/9d798dcb9589f9bd62e625a97d8db23ad9a678fa\"\u003e\u003ccode\u003e9d798dc\u003c/code\u003e\u003c/a\u003e Sync typeshed (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22054\"\u003e#22054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0861bb6450d6d3658e44dbca9cd2ba478faf3c1d\"\u003e\u003ccode\u003e0861bb6\u003c/code\u003e\u003c/a\u003e Reduce max protocol stack size to 20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22053\"\u003e#22053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.1...v2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.6 to 0.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through \u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or \u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15 instead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules (\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default, while \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and includes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e now recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003efull\u003c/code\u003e output format now shows unsafe fixes and suggestions requiring manual review, regardless of the \u003ca href=\"https://docs.astral.sh/ruff/settings/#unsafe-fixes\"\u003e\u003ccode\u003eunsafe-fixes\u003c/code\u003e\u003c/a\u003e setting. Actually applying unsafe fixes still requires explicit opt-in.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove the Python dependency from conda-forge builds (\u003ca href=\"https://redirect.github.com/conda-forge/ruff-feedstock/pull/361\"\u003econda-forge/ruff-feedstock#361\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe conda-forge build no longer depends on Python, now supports linux-riscv64, win-arm64, and linux-ppc64le platforms, and now includes shell completions. However, no longer depending on Python means that \u003ccode\u003epython -m ruff\u003c/code\u003e and \u003ccode\u003eimport ruff\u003c/code\u003e will no longer work. Use \u003ccode\u003eruff\u003c/code\u003e directly from \u003ccode\u003ePATH\u003c/code\u003e instead. PyPI installations and those from the standalone installer are unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove support for ruff-lsp (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28750\"\u003e#28750\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSupport for \u003ccode\u003eruff-lsp\u003c/code\u003e, the legacy Python language server \u003ca href=\"https://github.com/astral-sh/ruff/releases/tag/0.9.5\"\u003edeprecated in Ruff v0.9.5\u003c/a\u003e, has been removed. The Ruff VS Code extension now always uses the native language server; \u003ccode\u003eruff.nativeServer\u003c/code\u003e is deprecated and ignored. See the \u003ca href=\"https://docs.astral.sh/ruff/editors/migration/\"\u003emigration guide\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStabilization\u003c/h3\u003e\n\u003cp\u003eThe following rules have been stabilized and are no longer in preview:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-mismatch\"\u003e\u003ccode\u003elazy-import-mismatch\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID254\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-immediately-resolved\"\u003e\u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID255\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/os-path-commonprefix\"\u003e\u003ccode\u003eos-path-commonprefix\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eRUF071\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed.\nmacOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows\nexecutables have timestamped Authenticode signatures from Azure Artifact Signing. This enables\nverification of the release publisher and binary integrity, supports publisher-based allowlisting,\nand should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through\n\u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or\n\u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When\nchecking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15\ninstead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules\n(\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and\n\u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default,\nwhile \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e\n(\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and\nincludes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e\nnow recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b27c1ccfaa230fb195855f5cf3404a21e3379cd\"\u003e\u003ccode\u003e5b27c1c\u003c/code\u003e\u003c/a\u003e Bump version to 0.17.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29259\"\u003e#29259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8f362bf4cb5dbad095ac416602496705d41fc843\"\u003e\u003ccode\u003e8f362bf\u003c/code\u003e\u003c/a\u003e Integrate vendored Unicode names into Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/88a50d695c1142294bb4c780fad47d3306173885\"\u003e\u003ccode\u003e88a50d6\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode loose matching\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/276832aa91f2086a6ec880884fcdd987991cddf2\"\u003e\u003ccode\u003e276832a\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode alias normalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/26911caa2800758779965510d2f222b438abbb38\"\u003e\u003ccode\u003e26911ca\u003c/code\u003e\u003c/a\u003e Vendor unicode_names2 from upstream\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/27e3797508d1a7ad69e4900d51e38d78785aaf73\"\u003e\u003ccode\u003e27e3797\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eruff\u003c/code\u003e] Stabilize \u003ccode\u003eos-path-commonprefix\u003c/code\u003e (\u003ccode\u003eRUF071\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28764\"\u003e#28764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bbb52c1267cf39aba67e54c2b5800878d23073a9\"\u003e\u003ccode\u003ebbb52c1\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e (`TID255...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5aa9cbd3a49d32b24ac21fa7797ca87a330792a2\"\u003e\u003ccode\u003e5aa9cbd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-mismatch\u003c/code\u003e (\u003ccode\u003eTID254\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28760\"\u003e#28760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dba1bc893aedfeea2064c4e8e764135f0d44dc3f\"\u003e\u003ccode\u003edba1bc8\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (`...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef23c9c39eb3029bab0139c3ea7ae6d95c4131e0\"\u003e\u003ccode\u003eef23c9c\u003c/code\u003e\u003c/a\u003e Update default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28792\"\u003e#28792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.6...0.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug[watchdog]` from 3.1.8 to 3.1.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug[watchdog]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.9\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.9 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.9/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.9/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-9\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-9\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/46?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/46?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names with empty ADS markers on NTFS. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-g6x2-hccm-hh4m\"\u003ehttps://github.com/pallets/werkzeug/security/advisories/GHSA-g6x2-hccm-hh4m\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eProfilerMiddleware\u003c/code\u003e uses \u003ccode\u003eprofiling.tracing\u003c/code\u003e on Python 3.15. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3207\"\u003e#3207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003euri_to_iri\u003c/code\u003e and \u003ccode\u003eiri_to_uri\u003c/code\u003e preserve empty username, password, and port 0. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3189\"\u003e#3189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003eparse_options_header\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3231\"\u003e#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003eparse_etags\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3231\"\u003e#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003eparse_cookie\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3231\"\u003e#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_host\u003c/code\u003e also checks that the port is in the valid range. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3236\"\u003e#3236\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eint\u003c/code\u003e URL converter returns a 404 instead of 500 error when the value is longer than \u003ccode\u003esys.get_int_max_str_digits()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3237\"\u003e#3237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove debugger PIN generation from cgroup data inside Podman. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3245\"\u003e#3245\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eAuthorization\u003c/code\u003e parsing \u003ccode\u003ebasic\u003c/code\u003e auth disallows non-base64 characters.  \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e form data is no longer limited to \u003ccode\u003emax_form_memory_size\u003c/code\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/christ-ph/projetFinal/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/christ-ph%2FprojetFinal/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"},{"uuid":"5833096676","node_id":"PR_kwDOQuAMac8AAAABINGWGQ","number":801,"state":"closed","title":"Bump the python-minor-patch group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-16T12:36:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-13T15:29:11.000Z","updated_at":"2026-10-16T12:36:46.000Z","time_to_close":248853,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-minor-patch","update_count":17,"packages":[{"name":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.16.9","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"asyncpg","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"pgvector","old_version":"0.5.0","new_version":"0.5.1","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"aiohttp","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"langgraph","old_version":"1.2.12","new_version":"1.2.14","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langchain","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.6.6","new_version":"1.7.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"asyncssh","old_version":"2.24.0","new_version":"2.24.1","repository_url":"https://github.com/ronf/asyncssh"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"ansible-core","old_version":"2.21.4","new_version":"2.21.5","repository_url":"https://github.com/ansible/ansible"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.9` | `0.17.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.31.0` | `0.32.0` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.5.0` | `0.5.1` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.3` | `3.14.5` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.12` | `1.2.14` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.4.2` | `1.4.4` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.6.6` | `1.7.0` |\n| [asyncssh](https://github.com/ronf/asyncssh) | `2.24.0` | `2.24.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.54` | `2.1.4` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [ansible-core](https://github.com/ansible/ansible) | `2.21.4` | `2.21.5` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n\n\nUpdates `pytest-mock` from 3.15.1 to 3.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/604\"\u003e#604\u003c/a\u003e: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/611\"\u003e#611\u003c/a\u003e: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/606\"\u003e#606\u003c/a\u003e: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/547\"\u003e#547\u003c/a\u003e: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/147\"\u003e#147\u003c/a\u003e: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#604](https://github.com/pytest-dev/pytest-mock/issues/604) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/604\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#611](https://github.com/pytest-dev/pytest-mock/issues/611) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/611\u0026gt;\u003c/code\u003e_: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#606](https://github.com/pytest-dev/pytest-mock/issues/606) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/606\u0026gt;\u003c/code\u003e_: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#547](https://github.com/pytest-dev/pytest-mock/issues/547) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/547\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#147](https://github.com/pytest-dev/pytest-mock/issues/147) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/147\u0026gt;\u003c/code\u003e_: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f3b531f93c6d9837edc87ea1a6f4324dc9a2cdf3\"\u003e\u003ccode\u003ef3b531f\u003c/code\u003e\u003c/a\u003e Release 3.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/71ed67309520be160f3e100368705b58758d237a\"\u003e\u003ccode\u003e71ed673\u003c/code\u003e\u003c/a\u003e Fix duplicate_iterators for async spies (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/0797e3d303cc5bbe0a3514b0625f7aeb3fa350b0\"\u003e\u003ccode\u003e0797e3d\u003c/code\u003e\u003c/a\u003e Fix async assertion argument introspection (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/611\"\u003e#611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e24c334d573cfbf6989a31f4e3346676d9d31598\"\u003e\u003ccode\u003ee24c334\u003c/code\u003e\u003c/a\u003e docs: import os in the opening usage example (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/9e7eb7b59cde362c1c8ace2d18ca00fe2d7a1cd1\"\u003e\u003ccode\u003e9e7eb7b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/613\"\u003e#613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/445fd4d3daa8ed4c6d5428a77880da2e03d2f721\"\u003e\u003ccode\u003e445fd4d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/a8bd0b147afdf6b4bb1a1a3c3c088f32b0240091\"\u003e\u003ccode\u003ea8bd0b1\u003c/code\u003e\u003c/a\u003e Honour resetall() arguments for non-callable mocks (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/606\"\u003e#606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/6559fdfd5b67f096423e604a3a5a7045db2486a0\"\u003e\u003ccode\u003e6559fdf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/466d026254c949a8fbba8626b894308827be81cf\"\u003e\u003ccode\u003e466d026\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/164defebde25bc31d53a2a64943c5c9aac43b57e\"\u003e\u003ccode\u003e164defe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/603\"\u003e#603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.15.1...v3.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.9 to 0.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through \u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or \u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15 instead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules (\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default, while \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and includes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e now recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003efull\u003c/code\u003e output format now shows unsafe fixes and suggestions requiring manual review, regardless of the \u003ca href=\"https://docs.astral.sh/ruff/settings/#unsafe-fixes\"\u003e\u003ccode\u003eunsafe-fixes\u003c/code\u003e\u003c/a\u003e setting. Actually applying unsafe fixes still requires explicit opt-in.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove the Python dependency from conda-forge builds (\u003ca href=\"https://redirect.github.com/conda-forge/ruff-feedstock/pull/361\"\u003econda-forge/ruff-feedstock#361\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe conda-forge build no longer depends on Python, now supports linux-riscv64, win-arm64, and linux-ppc64le platforms, and now includes shell completions. However, no longer depending on Python means that \u003ccode\u003epython -m ruff\u003c/code\u003e and \u003ccode\u003eimport ruff\u003c/code\u003e will no longer work. Use \u003ccode\u003eruff\u003c/code\u003e directly from \u003ccode\u003ePATH\u003c/code\u003e instead. PyPI installations and those from the standalone installer are unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove support for ruff-lsp (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28750\"\u003e#28750\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSupport for \u003ccode\u003eruff-lsp\u003c/code\u003e, the legacy Python language server \u003ca href=\"https://github.com/astral-sh/ruff/releases/tag/0.9.5\"\u003edeprecated in Ruff v0.9.5\u003c/a\u003e, has been removed. The Ruff VS Code extension now always uses the native language server; \u003ccode\u003eruff.nativeServer\u003c/code\u003e is deprecated and ignored. See the \u003ca href=\"https://docs.astral.sh/ruff/editors/migration/\"\u003emigration guide\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStabilization\u003c/h3\u003e\n\u003cp\u003eThe following rules have been stabilized and are no longer in preview:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-mismatch\"\u003e\u003ccode\u003elazy-import-mismatch\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID254\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-immediately-resolved\"\u003e\u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID255\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/os-path-commonprefix\"\u003e\u003ccode\u003eos-path-commonprefix\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eRUF071\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed.\nmacOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows\nexecutables have timestamped Authenticode signatures from Azure Artifact Signing. This enables\nverification of the release publisher and binary integrity, supports publisher-based allowlisting,\nand should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through\n\u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or\n\u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When\nchecking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15\ninstead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules\n(\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and\n\u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default,\nwhile \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e\n(\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and\nincludes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e\nnow recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b27c1ccfaa230fb195855f5cf3404a21e3379cd\"\u003e\u003ccode\u003e5b27c1c\u003c/code\u003e\u003c/a\u003e Bump version to 0.17.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29259\"\u003e#29259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8f362bf4cb5dbad095ac416602496705d41fc843\"\u003e\u003ccode\u003e8f362bf\u003c/code\u003e\u003c/a\u003e Integrate vendored Unicode names into Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/88a50d695c1142294bb4c780fad47d3306173885\"\u003e\u003ccode\u003e88a50d6\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode loose matching\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/276832aa91f2086a6ec880884fcdd987991cddf2\"\u003e\u003ccode\u003e276832a\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode alias normalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/26911caa2800758779965510d2f222b438abbb38\"\u003e\u003ccode\u003e26911ca\u003c/code\u003e\u003c/a\u003e Vendor unicode_names2 from upstream\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/27e3797508d1a7ad69e4900d51e38d78785aaf73\"\u003e\u003ccode\u003e27e3797\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eruff\u003c/code\u003e] Stabilize \u003ccode\u003eos-path-commonprefix\u003c/code\u003e (\u003ccode\u003eRUF071\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28764\"\u003e#28764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bbb52c1267cf39aba67e54c2b5800878d23073a9\"\u003e\u003ccode\u003ebbb52c1\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e (`TID255...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5aa9cbd3a49d32b24ac21fa7797ca87a330792a2\"\u003e\u003ccode\u003e5aa9cbd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-mismatch\u003c/code\u003e (\u003ccode\u003eTID254\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28760\"\u003e#28760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dba1bc893aedfeea2064c4e8e764135f0d44dc3f\"\u003e\u003ccode\u003edba1bc8\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (`...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef23c9c39eb3029bab0139c3ea7ae6d95c4131e0\"\u003e\u003ccode\u003eef23c9c\u003c/code\u003e\u003c/a\u003e Update default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28792\"\u003e#28792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.9...0.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.31.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1367\"\u003e#1367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 1b118464 and 58c0c595)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 8d2a5aed)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake pool \u003ccode\u003emin_size\u003c/code\u003e a maintained connection floor and add \u003ccode\u003einit_size\u003c/code\u003e to\ncontrol the number of connections opened at startup (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e).\nIdle connections at or below \u003ccode\u003emin_size\u003c/code\u003e are retained, and closed connections\nare replaced in the background. \u003ccode\u003einit_size\u003c/code\u003e defaults to \u003ccode\u003emin_size\u003c/code\u003e.\nTo preserve the previous behavior, where the pool could drain to zero,\nreplace \u003ccode\u003emin_size=N\u003c/code\u003e with \u003ccode\u003einit_size=N, min_size=0\u003c/code\u003e.\n(by \u003ca href=\"https://github.com/shatilov-diman\"\u003e\u003ccode\u003e@​shatilov-diman\u003c/code\u003e\u003c/a\u003e in 67a1cbc5)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003ehashlib.pbkdf2_hmac()\u003c/code\u003e for faster SCRAM password derivation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1359\"\u003e#1359\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/twelfthlabor\"\u003e\u003ccode\u003e@​twelfthlabor\u003c/code\u003e\u003c/a\u003e in 00319a9b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse the statement cache for \u003ccode\u003ecopy_records_to_table()\u003c/code\u003e introspection (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1360\"\u003e#1360\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/matemax\"\u003e\u003ccode\u003e@​matemax\u003c/code\u003e\u003c/a\u003e in dd058652)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClean up connections rejected by \u003ccode\u003etarget_session_attrs\u003c/code\u003e immediately so an\nunresponsive rejected host cannot delay the selected connection, and cleanup\ntasks cannot outlive the event loop. Rejected connections are aborted without\nwaiting for a graceful disconnect; servers may log \u0026quot;unexpected EOF on client\nconnection\u0026quot; if the Terminate message is not delivered before the transport\ncloses.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a connection pool deadlock when releasing a connection after a protocol\nabort (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1324\"\u003e#1324\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/pchaseh\"\u003e\u003ccode\u003e@​pchaseh\u003c/code\u003e\u003c/a\u003e in 4a83cc2f)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHonor \u003ccode\u003eConnection.close(timeout=...)\u003c/code\u003e while waiting for a pending\ncancellation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1361\"\u003e#1361\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in c06bcb4d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent stuck cancellation from blocking connection teardown or pool release\nby bounding cancellation with the command or release timeout (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1370\"\u003e#1370\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 4cf02203)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePreserve the server error when the connection closes mid-operation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1369\"\u003e#1369\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/RitiGrover\"\u003e\u003ccode\u003e@​RitiGrover\u003c/code\u003e\u003c/a\u003e in 6c8f1a7a)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix COPY cleanup when a records generator raises, preserving the original\nexception and avoiding protocol desynchronization and stalled rollback (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1358\"\u003e#1358\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/CodingCossack\"\u003e\u003ccode\u003e@​CodingCossack\u003c/code\u003e\u003c/a\u003e in fdc6bc8f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/d701e11a392b0e3b93b7af4a05c1cdadddf75f8f\"\u003e\u003ccode\u003ed701e11\u003c/code\u003e\u003c/a\u003e asyncpg v0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b04f8f299dd05c380e3c14d32bd1c881063c2b58\"\u003e\u003ccode\u003eb04f8f2\u003c/code\u003e\u003c/a\u003e Bump to macOS 26 in runners, set deployment target to 11 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1384\"\u003e#1384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/3934d77bfb558527a3708be686b6e0e7f90ce2b3\"\u003e\u003ccode\u003e3934d77\u003c/code\u003e\u003c/a\u003e tests: Capture expected pool retry warnings during role changes (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1383\"\u003e#1383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/2c3750179e0289b2fd03dc2baa8e87f75afa174b\"\u003e\u003ccode\u003e2c37501\u003c/code\u003e\u003c/a\u003e tests: Avoid DeprecationWarning when settings up uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1382\"\u003e#1382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b7eea79c920832d353073951c28aca687d532b4a\"\u003e\u003ccode\u003eb7eea79\u003c/code\u003e\u003c/a\u003e Test pool min_size backoff on target attribute mismatch (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1381\"\u003e#1381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/46dda9139700dc18e63ae638021edfaddf0bf3a4\"\u003e\u003ccode\u003e46dda91\u003c/code\u003e\u003c/a\u003e Terminate rejected target_session_attrs candidates before returning (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1380\"\u003e#1380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/8d2a5aedbf36c6116212454ebeb8c242140f76e5\"\u003e\u003ccode\u003e8d2a5ae\u003c/code\u003e\u003c/a\u003e Support PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/58c0c595272cb91b81be82620c479ab5431b4d70\"\u003e\u003ccode\u003e58c0c59\u003c/code\u003e\u003c/a\u003e Bump uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/67a1cbc5eb4a6aa5df140b27f48488921521d6f7\"\u003e\u003ccode\u003e67a1cbc\u003c/code\u003e\u003c/a\u003e Make pool min_size a maintained connection floor (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/25aaaf5412cf868388d076f359d12feb2479a4bb\"\u003e\u003ccode\u003e25aaaf5\u003c/code\u003e\u003c/a\u003e fix: allow cursors in external transactions (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.31.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvector` from 0.5.0 to 0.5.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pgvector/pgvector-python/blob/master/CHANGELOG.md\"\u003epgvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.5.1 (2026-10-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed error with non-canonical SciPy sparse arrays\u003c/li\u003e\n\u003cli\u003eFixed error with SciPy sparse arrays with explicit zeros\u003c/li\u003e\n\u003cli\u003eFixed error with \u003ccode\u003eBit\u003c/code\u003e constructor for NumPy 1.24-1.26\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/5275164edb3a2847d4a5aec1af5ae90f7dc47b53\"\u003e\u003ccode\u003e5275164\u003c/code\u003e\u003c/a\u003e Version bump to 0.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/474522bafad1385c4bdda439700f39226b309ec0\"\u003e\u003ccode\u003e474522b\u003c/code\u003e\u003c/a\u003e Improved validation for bit strings - fixes \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/161\"\u003e#161\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/90056379c41574db1c0df367f9e02e79644ed995\"\u003e\u003ccode\u003e9005637\u003c/code\u003e\u003c/a\u003e Updated changelog [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/f3a05b42a9161f6f30fec9e31e161a21a2e2f3d2\"\u003e\u003ccode\u003ef3a05b4\u003c/code\u003e\u003c/a\u003e Updated changelog [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/f4dde1961e81db596660cdc619eb7609667bb9b3\"\u003e\u003ccode\u003ef4dde19\u003c/code\u003e\u003c/a\u003e Fixed handling of duplicates for SciPy sparse arrays - fixes \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/162\"\u003e#162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/c451fb017d479d9ce9af7e08c4ffdd06f7210bc4\"\u003e\u003ccode\u003ec451fb0\u003c/code\u003e\u003c/a\u003e Improved code consistency [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/63f5a483777209e30420e02da13abe46cbc4f2af\"\u003e\u003ccode\u003e63f5a48\u003c/code\u003e\u003c/a\u003e Fixed typo [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/cd18c3f1074e08a9bbe5d72c98f5c838e369caab\"\u003e\u003ccode\u003ecd18c3f\u003c/code\u003e\u003c/a\u003e Fixed error with SciPy sparse arrays with zeros\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/d3c5d4b780730472a69420ba0b6607bd58d13e45\"\u003e\u003ccode\u003ed3c5d4b\u003c/code\u003e\u003c/a\u003e Improved performance by checking has_canonical_format [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/fd74f7842cc28ef5030ba7c9627e1ce66148234e\"\u003e\u003ccode\u003efd74f78\u003c/code\u003e\u003c/a\u003e Fixed error with unordered SciPy sparse arrays - resolves \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/160\"\u003e#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pgvector/pgvector-python/compare/v0.5.0...v0.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp` from 3.14.3 to 3.14.5\nUpdates `cryptography` from 50.0.1 to 50.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e50.0.2 - 2026-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 4.0.3.\n* Added ``abi3.abi3t`` wheels for free-threaded CPython 3.15 and later.\n* Updated to PyO3 0.29.2, which fixes building ``cryptography`` on Cygwin and\n  MSYS2.\n\u003cp\u003e.. _v50-0-1:\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4dda5c7fe4ae71b8925f2551910a0ef959df9c7a\"\u003e\u003ccode\u003e4dda5c7\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump for 50.0.2 release + changelog (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15733\"\u003e#15733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/70c881cd7ea97d38df09f57c1117470cd1a5a2f7\"\u003e\u003ccode\u003e70c881c\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump pyo3 to 0.29.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15731\"\u003e#15731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/a8c45c449b8d29908a14561afd45fee8bf27d044\"\u003e\u003ccode\u003ea8c45c4\u003c/code\u003e\u003c/a\u003e [50.0.x] Build abi3.abi3t wheels for CPython 3.15+ (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15496\"\u003e#15496\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15732\"\u003e#15732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/50.0.1...50.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.12 to 1.2.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.14\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.14 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9215\"\u003e#9215\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.13\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.12\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(langgraph): fork before replaying an update checkpoint the thread moved past (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9170\"\u003e#9170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): keep an update_state on an older checkpoint out of its other branches (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9165\"\u003e#9165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): keep DeltaChannel counters on every update_state path (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9142\"\u003e#9142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(langgraph): 1.2.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9205\"\u003e#9205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): don't walk history for a DeltaChannel that was never written (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9141\"\u003e#9141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): don't replay an abandoned branch into a DeltaChannel fork (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8548\"\u003e#8548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump notebook from 7.5.6 to 7.5.7 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9168\"\u003e#9168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): hydrate subgraph delta channels with the caller-resolved saver (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8538\"\u003e#8538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): stop reporting answered interrupts in get_state (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9103\"\u003e#9103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9155\"\u003e#9155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the minor-and-patch group in /libs/checkpoint-conformance with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9145\"\u003e#9145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/sdk-py with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9149\"\u003e#9149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump tornado from 6.5.8 to 6.5.9 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9160\"\u003e#9160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260712 to 2.33.0.20260906 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9156\"\u003e#9156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump pyjwt from 2.15.0 to 2.15.1 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9140\"\u003e#9140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump urllib3 from 2.7.0 to 2.8.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9138\"\u003e#9138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump pyjwt from 2.14.0 to 2.15.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9139\"\u003e#9139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump pyjwt from 2.13.0 to 2.14.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9126\"\u003e#9126\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/70dd64065bffaa3b6ab61a33f1f020fb54db8efa\"\u003e\u003ccode\u003e70dd640\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.14 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9215\"\u003e#9215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/55b0e36c51d2922b11640b980fcfca1064243a96\"\u003e\u003ccode\u003e55b0e36\u003c/code\u003e\u003c/a\u003e release(sdk-py): 0.4.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9214\"\u003e#9214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d89c7e100ec6fc1512544d23b0a7c5169699ef3e\"\u003e\u003ccode\u003ed89c7e1\u003c/code\u003e\u003c/a\u003e fix(sdk-py): percent-encode thread_id and assistant_id in thread stream reque...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/2d942085e214ef6b99b6f54ed4d544a7c7c5ac56\"\u003e\u003ccode\u003e2d94208\u003c/code\u003e\u003c/a\u003e fix(langgraph): fork before replaying an update checkpoint the thread moved p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/456e2b1acc67c8c6c13bbc0e0ca8ba7e11503d17\"\u003e\u003ccode\u003e456e2b1\u003c/code\u003e\u003c/a\u003e fix(langgraph): keep an update_state on an older checkpoint out of its other ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/1b84cb08733a2a0a102ed19845bf20511dcc6535\"\u003e\u003ccode\u003e1b84cb0\u003c/code\u003e\u003c/a\u003e fix(langgraph): keep DeltaChannel counters on every update_state path (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9142\"\u003e#9142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/8e15e0d0bcffa6d3d5a776206e6e8163a3595463\"\u003e\u003ccode\u003e8e15e0d\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9205\"\u003e#9205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/524b320e30a31d2660ee1a7e9b312882fe4a6c08\"\u003e\u003ccode\u003e524b320\u003c/code\u003e\u003c/a\u003e fix(langgraph): don't walk history for a DeltaChannel that was never written ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/9a0394d88b2211f299dcd69df92db3480c69ee61\"\u003e\u003ccode\u003e9a0394d\u003c/code\u003e\u003c/a\u003e fix(langgraph): don't replay an abandoned branch into a DeltaChannel fork (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8\"\u003e#8\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7dc9195e4141c8fbd8118581b3dd61d158628aa8\"\u003e\u003ccode\u003e7dc9195\u003c/code\u003e\u003c/a\u003e chore(deps): bump notebook from 7.5.6 to 7.5.7 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9168\"\u003e#9168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.12...1.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain` from 1.4.2 to 1.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-fireworks==1.4.4\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-fireworks==1.4.3\u003c/p\u003e\n\u003cp\u003erelease(fireworks): 1.4.4 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38753\"\u003e#38753\u003c/a\u003e)\nfix(fireworks): report cached prompt token usage (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38751\"\u003e#38751\u003c/a\u003e)\nchore(deps): refresh lockfiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38746\"\u003e#38746\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38663\"\u003e#38663\u003c/a\u003e)\nchore: bump pytest from 9.1.0 to 9.1.1 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38594\"\u003e#38594\u003c/a\u003e)\nchore: bump langsmith from 0.8.18 to 0.9.5 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38595\"\u003e#38595\u003c/a\u003e)\ndocs(fireworks): clarify prompt-cache session affinity guidance (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38522\"\u003e#38522\u003c/a\u003e)\ntest(fireworks): cover request-level extra headers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38518\"\u003e#38518\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.4.4\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.4.3\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.4.4 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41163\"\u003e#41163\u003c/a\u003e)\nfix(langchain): (SummarizationMiddleware) retry summary step on context overflow (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41159\"\u003e#41159\u003c/a\u003e)\nchore(deps): bump fsspec from 2026.6.0 to 2026.9.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41097\"\u003e#41097\u003c/a\u003e)\nchore(deps): bump multidict from 6.7.0 to 6.9.1 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41075\"\u003e#41075\u003c/a\u003e)\nchore(deps): bump langgraph-sdk from 0.4.2 to 0.4.4 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41074\"\u003e#41074\u003c/a\u003e)\nchore(deps): bump fsspec from 2025.10.0 to 2026.6.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41071\"\u003e#41071\u003c/a\u003e)\nchore(langchain): bump minimum FastMCP to 4.0.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41054\"\u003e#41054\u003c/a\u003e)\nchore(deps): bump pyjwt from 2.13.0 to 2.15.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40939\"\u003e#40939\u003c/a\u003e)\nchore(deps): bump urllib3 from 2.7.0 to 2.8.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40943\"\u003e#40943\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-fireworks==1.4.3\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-fireworks==1.4.2\u003c/p\u003e\n\u003cp\u003erelease(fireworks): 1.4.3\nchore: bump vcrpy from 8.1.1 to 8.2.1 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38314\"\u003e#38314\u003c/a\u003e)\nchore: bump langsmith from 0.8.16 to 0.8.18 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38313\"\u003e#38313\u003c/a\u003e)\nchore: bump langsmith from 0.8.14 to 0.8.16 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38235\"\u003e#38235\u003c/a\u003e)\nchore: bump pytest from 9.0.3 to 9.1.0 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38233\"\u003e#38233\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38210\"\u003e#38210\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38191\"\u003e#38191\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38133\"\u003e#38133\u003c/a\u003e)\ndocs: refresh \u003ccode\u003eREADME\u003c/code\u003e installation and resources (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38119\"\u003e#38119\u003c/a\u003e)\nrelease(core): 1.4.7 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38111\"\u003e#38111\u003c/a\u003e)\nfix(core,partners): rename package version trace metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38110\"\u003e#38110\u003c/a\u003e)\nstyle(core,langchain,langchain-classic,partners): replace double backticks in docstrings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38095\"\u003e#38095\u003c/a\u003e)\nchore: bump langsmith from 0.8.9 to 0.8.14 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38093\"\u003e#38093\u003c/a\u003e)\nrelease(core): 1.4.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38061\"\u003e#38061\u003c/a\u003e)\nfeat(core,partners): add package version tracking to tracing metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/35295\"\u003e#35295\u003c/a\u003e)\nchore(infra): bump mypy to 2.1 and unify type-check config across the monorepo (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36470\"\u003e#36470\u003c/a\u003e)\nfeat(standard-tests): validate tool call chunks during streaming (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issue...\n\n_Description has been truncated_","html_url":"https://github.com/vladmesh/codegen_orchestrator/pull/801","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladmesh%2Fcodegen_orchestrator/issues/801","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/801/packages"},{"uuid":"5830494297","node_id":"PR_kwDOLjyWQ88AAAABILAgqg","number":13,"state":"open","title":"deps(python): bump the python-dependencies group across 1 directory with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-13T12:41:57.000Z","updated_at":"2026-10-13T12:42:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python): bump","group_name":"python-dependencies","update_count":21,"packages":[{"name":"anyio","old_version":"4.13.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"dnspython","old_version":"2.8.0","new_version":"2.9.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"flask-jwt-extended","old_version":"4.7.1","new_version":"4.7.4","repository_url":"https://github.com/vimalloc/flask-jwt-extended"},{"name":"idna","old_version":"3.13","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"prometheus-client","old_version":"0.25.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.12.1","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pymongo","old_version":"4.17.0","new_version":"4.18.3","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"starlette","old_version":"1.0.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"werkzeug","old_version":"3.1.8","new_version":"3.1.9","repository_url":"https://github.com/pallets/werkzeug"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.15.1` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.7.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.2` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.8.0` | `2.9.0` |\n| [flask-jwt-extended](https://github.com/vimalloc/flask-jwt-extended) | `4.7.1` | `4.7.4` |\n| [idna](https://github.com/kjd/idna) | `3.13` | `3.20` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.25.0` | `0.26.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.1` | `2.15.1` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.17.0` | `4.18.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.4` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.0` | `1.7.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.54.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.8` | `3.1.9` |\n\n\nUpdates `anyio` from 4.13.0 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.11.1 to 3.12.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.12.1 (2026-07-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRestored the previous SyncToAsync.\u003cstrong\u003ecall\u003c/strong\u003e internal code shape, which was\nrelied on by some APM services. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/572\"\u003e#572\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNote, this change was available whilst maintaining the underlying fix (from\n\u003ca href=\"https://redirect.github.com/django/asgiref/issues/564\"\u003e#564\u003c/a\u003e). It does not constitute an API stability promise. Ideally APMs are\n\u003cem\u003enot\u003c/em\u003e monkey patching internal APIs, and future changes will be made here if\nneeded.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12.0 (2026-07-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eAsyncToSync\u003c/code\u003e no longer captures the running event loop on\ninstantiation. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/562\"\u003e#562\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis resolves a series of deadlocks that users experienced after asgiref 3.9.0,\nparticularly with pytest-asyncio. pytest-asyncio stops the event loop between\ntests, and long-running unawaited futures could find themselves trying to\nschedule work onto a stopped loop, and so would never complete. Ideally, code\nshould be structured to await long-running futures before returning, but this\nchange should help users experiencing issues here.\u003c/p\u003e\n\u003cp\u003eThe loop is now resolved when the callable is invoked rather than when it is\ncreated. If \u003ccode\u003easync_to_sync\u003c/code\u003e is called from within \u003ccode\u003esync_to_async\u003c/code\u003e, the\nparent event loop is still used, as before.\u003c/p\u003e\n\u003cp\u003eThe possibility of deadlock therefore remains in some nested patterns. For\nexample, an async function may call a long-running \u003ccode\u003esync_to_async\u003c/code\u003e function\nthat itself uses \u003ccode\u003easync_to_sync\u003c/code\u003e; if the outer function returns before the\nsync future completes, the parent event loop may already be stopped, and the\nnested calls cannot be driven to completion.\u003c/p\u003e\n\u003cp\u003eThis is not a bug in asgiref — the same patterns deadlock in plain asyncio. As\nabove, restructure your code to await the \u003ccode\u003esync_to_async\u003c/code\u003e future before\nexiting the driving coroutine.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an event loop deadlock when exiting \u003ccode\u003eThreadSensitiveContext\u003c/code\u003e\nwhile its executor thread was still blocked waiting on the event loop.\n(\u003ca href=\"https://redirect.github.com/django/asgiref/issues/535\"\u003e#535\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for EOL Python 3.9.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eStatelessServer.run()\u003c/code\u003e failing on Python 3.14, where\n\u003ccode\u003easyncio.get_event_loop()\u003c/code\u003e no longer creates an event loop if none\nexists. It now uses \u003ccode\u003easyncio.run()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/559\"\u003e#559\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eLocal\u003c/code\u003e leaking data between unrelated sync threads when\n\u003ccode\u003esys.flags.thread_inherit_context\u003c/code\u003e is enabled (Python 3.14+), so a newly\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef9d4b8b371cf8a7bb63dea3d0fdc60923e9e081\"\u003e\u003ccode\u003eef9d4b8\u003c/code\u003e\u003c/a\u003e Releasing 3.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/34fba6328f67a753d814c280811fd34094bd1f6c\"\u003e\u003ccode\u003e34fba63\u003c/code\u003e\u003c/a\u003e Restore previous SyncToAsync.\u003cstrong\u003ecall\u003c/strong\u003e internal code shape.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a43900c131874be571c6afdca642d4054eed0acf\"\u003e\u003ccode\u003ea43900c\u003c/code\u003e\u003c/a\u003e Separate mypy from tests extra.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/1b7c338591054c04ff6c140d899ced28b803b4e0\"\u003e\u003ccode\u003e1b7c338\u003c/code\u003e\u003c/a\u003e Releasing 3.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/157d9d4168434d73b1bb5a619f947b74ccbf1fc8\"\u003e\u003ccode\u003e157d9d4\u003c/code\u003e\u003c/a\u003e Renovate precommit (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/deda0d4fd8d3997dddd9646dd9ef7e0b6d3e59a5\"\u003e\u003ccode\u003ededa0d4\u003c/code\u003e\u003c/a\u003e Test free-threading builds and fix Local data leak for thread_inherit_context...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a54250a24ad770616d3afcc37af3186558562041\"\u003e\u003ccode\u003ea54250a\u003c/code\u003e\u003c/a\u003e Don’t capture the event loop in \u003ccode\u003eAsyncToSync.__init__\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/836356a2802247a0963177197b50cbd7476d7950\"\u003e\u003ccode\u003e836356a\u003c/code\u003e\u003c/a\u003e Use asyncio.run in StatelessServer.run (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/561\"\u003e#561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/e04afd54ba29bb277ba6177dc898c73c129446f3\"\u003e\u003ccode\u003ee04afd5\u003c/code\u003e\u003c/a\u003e Dropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/95d2430a346be7f40652d2eabff84fe54fbc725d\"\u003e\u003ccode\u003e95d2430\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/535\"\u003e#535\u003c/a\u003e: ThreadSensitiveContext.\u003cstrong\u003eaexit\u003c/strong\u003e blocking the event loop. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.11.1...3.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.4.22 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.7 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.7...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.8.0 to 2.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.9.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a potential \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003eexcessive CPU consumption\u003c/a\u003e issue.   Thanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos, for discovering and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.11.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Nicki Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression chain length is limited to 16.  Prior to this change,\na maliciously crafted DNS message could cause\ndns.name.from_wire_parser() to use excessive CPU for DNS name\ndecompression. Applications which processed untrusted DNS wire form\nmessages with dnspython could be degraded or DoS'd by the extra CPU\nuse required.\u003c/p\u003e\n\u003cp\u003eThanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos\nfor finding and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003ehttps://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHttpx2 has replaced httpx for HTTPS TCP connections.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.11.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDNSSEC now supports ML-DSA-44, a post-quantum signature algorithm.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NSEC3 Next Hashed Owner Name in presentation format is now decoded as\nbase32hex (RFC 5155 Section 1.3, RFC 4648 Extended Hex Alphabet).  The letters\nW, X, Y, and Z are not in that alphabet; they used to be accepted and silently\ndecoded to a different owner name, so \u003ccode\u003eto_text\u003c/code\u003e of the result did not match\nthe input.  They are now rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NID and L64 node/locator ids in presentation format are now rejected when\na group contains anything other than hex digits. A sign or underscore, which\n\u003ccode\u003eint()\u003c/code\u003e silently accepts, produced a record whose text form did not parse\nback the same way (RFC 6742).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRdata of a known type in the generic \u003ccode\u003e\\#\u003c/code\u003e syntax, such as an NS record in a\nzone file, no longer fails to parse when it contains a name under the origin.\nIts names are relativized as in the type's own text form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe SVCB and HTTPS \u003ccode\u003eech\u003c/code\u003e parameter value must now be an ECHConfigList with a\ncorrect length prefix and at least 4 octets of content (RFC 9848, RFC 9849).\nThe individual ECHConfig structures are not checked.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS SvcParamKeys in presentation format, including those listed in\n\u003ccode\u003emandatory\u003c/code\u003e, must now be spelled as RFC 9460 requires: 1-63 lowercase\nletters, digits, or hyphens.  Uppercase keys such as \u003ccode\u003eALPN\u003c/code\u003e and keys with\nunderscores such as \u003ccode\u003eno_default_alpn\u003c/code\u003e are rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS presentation format parsing now follows the escaping rules of\nRFC 9460.  SvcParamKeys may not contain escapes (e.g. \u003ccode\u003e\\097lpn=h2\u003c/code\u003e), and in\ncomma-separated values (\u003ccode\u003ealpn\u003c/code\u003e, \u003ccode\u003edocpath\u003c/code\u003e) only \u003ccode\u003e\\,\u003c/code\u003e and \u003ccode\u003e\\\\\u003c/code\u003e are\nvalid escapes after character-string decoding (e.g. \u003ccode\u003ealpn=\u0026quot;h2\\\\x\u0026quot;\u003c/code\u003e is\nrejected).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/e790c8f20a67ad439c7aafef2321e161c6028eee\"\u003e\u003ccode\u003ee790c8f\u003c/code\u003e\u003c/a\u003e add missing test file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b72af6723fa0df2113522132363eeda99c9abaa6\"\u003e\u003ccode\u003eb72af67\u003c/code\u003e\u003c/a\u003e CI release branch update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bdd62fed595a80b65feac75d7c2e1e3b908c56e6\"\u003e\u003ccode\u003ebdd62fe\u003c/code\u003e\u003c/a\u003e release prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bafc96391dc352832fb17cc7939782735b642fb8\"\u003e\u003ccode\u003ebafc963\u003c/code\u003e\u003c/a\u003e Merge branch 'decompression-limit'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c5fecf515b4fa3a12e882bf80da232c94134cf50\"\u003e\u003ccode\u003ec5fecf5\u003c/code\u003e\u003c/a\u003e release tidying\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c7686f3ef513d0da121f57fe1899bf2a2997da35\"\u003e\u003ccode\u003ec7686f3\u003c/code\u003e\u003c/a\u003e update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/3c855c8d8f8269eb672aef3679cd2e33db924c03\"\u003e\u003ccode\u003e3c855c8\u003c/code\u003e\u003c/a\u003e more type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/52815c91bbd831f6cbe85ed7bba4d7b8e1c25400\"\u003e\u003ccode\u003e52815c9\u003c/code\u003e\u003c/a\u003e type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/f563427fecd9c0c4ba60cf002f2f33a5c396dd2a\"\u003e\u003ccode\u003ef563427\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b485e460c266540a1a09ca6d8d1d7b685b1d3023\"\u003e\u003ccode\u003eb485e46\u003c/code\u003e\u003c/a\u003e Limit decompression to a chain length of at most 16 pointers.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.8.0...v2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-jwt-extended` from 4.7.1 to 4.7.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/releases\"\u003eflask-jwt-extended's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.7.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esetup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requirement by \u003ca href=\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.7.3\u003c/h2\u003e\n\u003cp\u003eI'm skipping 4.7.2 because I forgot to bump the python version in code. This is the same as 4.7.2, with things setup correctly.\u003c/p\u003e\n\u003cp\u003eOops\u003c/p\u003e\n\u003ch2\u003e4.7.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: a unexpected token by \u003ca href=\"https://github.com/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate active python versions by \u003ca href=\"https://github.com/vimalloc\"\u003e\u003ccode\u003e@​vimalloc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/575\"\u003evimalloc/flask-jwt-extended#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyJWT to 2.12.1 by \u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/fdad1cd380fa39c2bbe5b8fb2db69b05d123293f\"\u003e\u003ccode\u003efdad1cd\u003c/code\u003e\u003c/a\u003e Bump to 4.7.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/a049882b80b077ed2c751d3b2eb9b3f70d925c4d\"\u003e\u003ccode\u003ea049882\u003c/code\u003e\u003c/a\u003e setup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requiremen...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/03b64352620661ab464db95f76f6950ff7986ad1\"\u003e\u003ccode\u003e03b6435\u003c/code\u003e\u003c/a\u003e Bump to 4.7.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/9bf8d353a87a8ec7ac144d7090dd8f9a51bcedc6\"\u003e\u003ccode\u003e9bf8d35\u003c/code\u003e\u003c/a\u003e Bump PyJWT to 2.12.1 (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/574\"\u003e#574\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/78cf9447f614365d1d0aaa9334be97a1634cfaa9\"\u003e\u003ccode\u003e78cf944\u003c/code\u003e\u003c/a\u003e Update active python versions (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/1910726f152016c3e48d61792983eebe11f54ac2\"\u003e\u003ccode\u003e1910726\u003c/code\u003e\u003c/a\u003e fix: a unexpected token (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.13 to 3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003ev3.18\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.17\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.16\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.20 (2026-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d55e65e1a3b1ede7f556bc202738066f5597e249\"\u003e\u003ccode\u003ed55e65e\u003c/code\u003e\u003c/a\u003e Release 3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0c0824a928e50048e59d4ce55fe760dba30528bc\"\u003e\u003ccode\u003e0c0824a\u003c/code\u003e\u003c/a\u003e Pre-release 3.20rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bd7c316a08761c79ba557b5b9e6a3da24d71fa88\"\u003e\u003ccode\u003ebd7c316\u003c/code\u003e\u003c/a\u003e Note Python 3.15 support in the 3.20 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b6cce8523eae3442aba976f01607b1cdf797c6ff\"\u003e\u003ccode\u003eb6cce85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/276\"\u003e#276\u003c/a\u003e from kjd/unicode-18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/9a4bc59e9d5ab89e7916fc0a50650cb55e3faf26\"\u003e\u003ccode\u003e9a4bc59\u003c/code\u003e\u003c/a\u003e Update to Unicode 18.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/dfab5a06affddcc7781a7bbab1cac1bb7d3b4e05\"\u003e\u003ccode\u003edfab5a0\u003c/code\u003e\u003c/a\u003e Merge branch 'python-3.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/417c35496ccbffad4b0a434ac9b563ee6f8fa0a9\"\u003e\u003ccode\u003e417c354\u003c/code\u003e\u003c/a\u003e Read the latest Unicode version from the DerivedAge.txt header instead of the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cd1739200f3bf07871372bcb31c271de136eaccf\"\u003e\u003ccode\u003ecd17392\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/274\"\u003e#274\u003c/a\u003e from kjd/fix-decode-length-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5796d79d44c76a54f03e8938dd22edaa1221c27\"\u003e\u003ccode\u003ec5796d7\u003c/code\u003e\u003c/a\u003e Skip the decode round-trip check for domains past encode's length limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ee690bf133e874351103b9fe838fdda2a7a09f\"\u003e\u003ccode\u003ed6ee690\u003c/code\u003e\u003c/a\u003e Update to Python 3.15 release candidate in CI and add trove classifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.13...v3.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.3 to 3.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.4\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.4/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-4\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/17?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/17?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild Python 3.15, armv7l, ppc64le, Android, and iOS wheels.\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003estriptags\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/521\"\u003e#521\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.4\u003c/h2\u003e\n\u003cp\u003eReleased 2026-10-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild Python 3.15, armv7l, ppc64le, Android, and iOS wheels.\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003estriptags\u003c/code\u003e. :issue:\u003ccode\u003e521\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/ece26078ec168ebac69f02877238e68d4b376c91\"\u003e\u003ccode\u003eece2607\u003c/code\u003e\u003c/a\u003e release version 3.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/620bc809d748de3a7848bdf7e27b1c2a2903aaf5\"\u003e\u003ccode\u003e620bc80\u003c/code\u003e\u003c/a\u003e split archs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/73c3be1596906daf3e642e51852af5a019c5e1ea\"\u003e\u003ccode\u003e73c3be1\u003c/code\u003e\u003c/a\u003e fix wheel builds (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/d8ae19e6e45b5512472b74fe5c60b7f6aa18d70f\"\u003e\u003ccode\u003ed8ae19e\u003c/code\u003e\u003c/a\u003e fix wheel builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/ff1eaff921f92db57327752bbc37472d37fb9b21\"\u003e\u003ccode\u003eff1eaff\u003c/code\u003e\u003c/a\u003e Build Android and iOS wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/87e64f9628c574bf91898f8642a21356cccaa58c\"\u003e\u003ccode\u003e87e64f9\u003c/code\u003e\u003c/a\u003e build Android and iOS wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bc33c55cb3078ba9f9b0950babb32f8d842f1267\"\u003e\u003ccode\u003ebc33c55\u003c/code\u003e\u003c/a\u003e Build ppc64le wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/518\"\u003e#518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/0ddd6eac9b20df52c75fae9181c0e73e195fa8d1\"\u003e\u003ccode\u003e0ddd6ea\u003c/code\u003e\u003c/a\u003e build ppc64le wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3e0775809b92150b10d1671ce1821ea6eb56be0c\"\u003e\u003ccode\u003e3e07758\u003c/code\u003e\u003c/a\u003e Build armv7l wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/39b9aae5f1e70edc33f380b47d1bef0e281746b5\"\u003e\u003ccode\u003e39b9aae\u003c/code\u003e\u003c/a\u003e build armv7l wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.3...3.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.2 to 26.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a public \u003ccode\u003eVersionRange\u003c/code\u003e API and \u003ccode\u003eSpecifierSet.to_range()\u003c/code\u003e, representing the versions a specifier set accepts as an interval set that supports intersection, union, difference, complement, set relations, membership tests, and filtering. \u003ccode\u003eVersionRange.to_specifier_set()\u003c/code\u003e converts a range back to a \u003ccode\u003eSpecifierSet\u003c/code\u003e where a PEP 440 form exists. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1267\"\u003e#1267\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1194\"\u003e#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer source distributions over wheels for selected packages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epure_python_tags()\u003c/code\u003e to generate the pure-Python tags for a Python version without touching the running platform. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_subset()\u003c/code\u003e, \u003ccode\u003eSpecifierSet.is_superset()\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.is_disjoint()\u003c/code\u003e, which compare the versions two specifier sets accept. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBehavior adaptations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1157\"\u003e#1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e tags on Linux. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for versions and specifiers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a non-string. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to \u003ccode\u003eVersion.from_parts\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary intersections. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for requirements and markers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for trailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and \u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in sets and dicts. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize requested extra names before comparing or hashing requiremen...\n\n_Description has been truncated_","html_url":"https://github.com/dmancilla85/py-rest-server/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmancilla85%2Fpy-rest-server/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"5811491274","node_id":"PR_kwDOUa0jGc8AAAABH74GLw","number":29,"state":"closed","title":"chore(deps): bump uvicorn from 0.31.0 to 0.54.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-12T19:04:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-12T09:32:29.000Z","updated_at":"2026-10-12T19:04:43.000Z","time_to_close":34332,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"uvicorn","old_version":"0.31.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.31.0 to 0.54.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.31.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uvicorn\u0026package-manager=pip\u0026previous-version=0.31.0\u0026new-version=0.54.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Atreyeed02/Keel/pull/29","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Atreyeed02%2FKeel/issues/29","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/29/packages"},{"uuid":"5810899335","node_id":"PR_kwDOP0CBjs8AAAABH7Z5rA","number":133,"state":"open","title":"build(deps): bump the backend-minor-patch group across 1 directory with 12 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-12T08:45:51.000Z","updated_at":"2026-10-12T08:45:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"backend-minor-patch","update_count":12,"packages":[{"name":"fastapi","old_version":"0.140.0","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"mcp","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"pandas","old_version":"3.0.5","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"coverage","old_version":"7.15.2","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"hypothesis","old_version":"6.161.5","new_version":"6.168.5","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"mypy","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/python/mypy"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"ruff","old_version":"0.16.0","new_version":"0.16.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"ty","old_version":"0.0.63","new_version":"0.0.85","repository_url":"https://github.com/astral-sh/ty"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-minor-patch group with 12 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.140.0` | `0.143.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `2.2.0` | `2.3.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.5` | `3.0.6` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.14.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.54.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.16.2` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.161.5` | `6.168.5` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.4.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.0` | `0.16.10` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.63` | `0.0.85` |\n\n\nUpdates `fastapi` from 0.140.0 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.140.0...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.1.1 to 6.1.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.3 (2026-09-02)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2165901: External parameter entity parsing was allowed by default\n(with \u003ccode\u003eresolve_entities=\u0026quot;internal\u0026quot;\u003c/code\u003e).\nIssue found by Tomer Fichman.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.1.2 (2026-08-18)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eGH#526: Some build files were missing in the sdist.\nPatch by Nicola Soranzo.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSome minor corrections for error handling cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuilt with Cython 3.2.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/3c1a4c7f2d5a3c19efe01adfd3c33ac3c8fe52c1\"\u003e\u003ccode\u003e3c1a4c7\u003c/code\u003e\u003c/a\u003e Prepare release of 6.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c1191fc55b8d574544203d07e7a02ba3378ced8d\"\u003e\u003ccode\u003ec1191fc\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/03ec3123b9683e7f02ce659f34322667683d3eef\"\u003e\u003ccode\u003e03ec312\u003c/code\u003e\u003c/a\u003e Disable parameter entity parsing when internal-only entity parsing is requested.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/11d03e922e0a7845131df3ab2fb5e894c0ced0ab\"\u003e\u003ccode\u003e11d03e9\u003c/code\u003e\u003c/a\u003e Build: Prevent duplicate Py3.8 wheel builds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9efc586ed3555be22548a3188f7f435826834961\"\u003e\u003ccode\u003e9efc586\u003c/code\u003e\u003c/a\u003e Build: Exclude musllinux-ARM from Py3.8 wheel building to prevent slow emulat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9716fb1e1a80db4ba5e36bf99947dfccd8730471\"\u003e\u003ccode\u003e9716fb1\u003c/code\u003e\u003c/a\u003e Build: Include older PyPy versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/0f3327d3c8fc1ba01c90a866770ad8c4889e537f\"\u003e\u003ccode\u003e0f3327d\u003c/code\u003e\u003c/a\u003e Build: Exclude Win-Aarch64 from wheel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6967c960976541979570099de9866af398fb292f\"\u003e\u003ccode\u003e6967c96\u003c/code\u003e\u003c/a\u003e Build: Make all built wheels downloadable even if they don't pass the release...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/061218d210747a1181dea76fb6b6d0eebe946b2d\"\u003e\u003ccode\u003e061218d\u003c/code\u003e\u003c/a\u003e Build: Exclude Py3.15 i686 wheels from validation (because they are intention...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/ce9fe0dd26bd5b64fe03b6bcdf68a997ee5a2596\"\u003e\u003ccode\u003ece9fe0d\u003c/code\u003e\u003c/a\u003e Build: Fix Py3.8 windows build.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lxml/lxml/compare/lxml-6.1.1...lxml-6.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003epip install -U mcp\u003c/code\u003e. Docs: \u003ca href=\"https://py.sdk.modelcontextprotocol.io/\"\u003ehttps://py.sdk.modelcontextprotocol.io/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eMostly fixes, plus three new options. A few things behave differently, so skim these first:\u003c/p\u003e\n\u003ch2\u003eBehaviour changes\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003ehttpx2\u0026gt;=2.10.0\u003c/code\u003e is now required\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3600\"\u003e#3600\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt was \u003ccode\u003e\u0026gt;=2.5.0\u003c/code\u003e. The new \u003ccode\u003emax_sse_event_size\u003c/code\u003e option needs it.\u003c/li\u003e\n\u003cli\u003eNothing to do unless you pin \u003ccode\u003ehttpx2\u003c/code\u003e below 2.10.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eA tool with an invalid \u003ccode\u003ex-mcp-header\u003c/code\u003e annotation fails at registration\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@mcp.tool()\u003c/code\u003e, \u003ccode\u003eadd_tool\u003c/code\u003e and \u003ccode\u003eTool.from_function\u003c/code\u003e raise \u003ccode\u003eInvalidSignature\u003c/code\u003e, naming the tool and the problem.\u003c/li\u003e\n\u003cli\u003eUntil now the server started, and 2026-07-28 clients silently dropped the tool from their listing.\u003c/li\u003e\n\u003cli\u003eRefused: anything other than a plain \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e or \u003ccode\u003ebool\u003c/code\u003e parameter (so also \u003ccode\u003estr | None\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, lists and enums), a header name that isn't a valid token, and two names that differ only by case.\u003c/li\u003e\n\u003cli\u003eFor an optional header parameter, give the schema directly: \u003ccode\u003eAnnotated[str | None, WithJsonSchema({\u0026quot;type\u0026quot;: \u0026quot;string\u0026quot;, \u0026quot;x-mcp-header\u0026quot;: \u0026quot;Region\u0026quot;})] = None\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eEmpty \u003ccode\u003e_meta\u003c/code\u003e and \u003ccode\u003eparams\u003c/code\u003e are no longer sent\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOn 2025-11-25 and earlier connections, 2.x sent \u003ccode\u003e\u0026quot;_meta\u0026quot;: {}\u003c/code\u003e on every request. Some servers reject that. It is now left out, as in v1.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eping\u003c/code\u003e and list requests without a cursor go out with no \u003ccode\u003eparams\u003c/code\u003e member.\u003c/li\u003e\n\u003cli\u003eOn the receiving side \u003ccode\u003ectx.meta\u003c/code\u003e is \u003ccode\u003eNone\u003c/code\u003e rather than \u003ccode\u003e{}\u003c/code\u003e, and middleware sees \u003ccode\u003ectx.params\u003c/code\u003e as \u003ccode\u003eNone\u003c/code\u003e for a request without params.\u003c/li\u003e\n\u003cli\u003e2026-07-28 connections are unchanged.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003einitialize\u003c/code\u003e leaves out \u003ccode\u003eexperimental\u003c/code\u003e when none is configured\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3614\"\u003e#3614\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt used to send \u003ccode\u003e\u0026quot;experimental\u0026quot;: {}\u003c/code\u003e. \u003ccode\u003eserver/discover\u003c/code\u003e already left it out.\u003c/li\u003e\n\u003cli\u003eClient code reading \u003ccode\u003ecapabilities.experimental\u003c/code\u003e on a legacy connection should handle \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eMcp-Param-*\u003c/code\u003e validation looks the tool up by name\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3630\"\u003e#3630\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMCPServer\u003c/code\u003e no longer runs \u003ccode\u003etools/list\u003c/code\u003e for every \u003ccode\u003etools/call\u003c/code\u003e, so middleware no longer sees that extra request.\u003c/li\u003e\n\u003cli\u003eThe registered schema is what gets checked. Middleware that filters or rewrites \u003ccode\u003etools/list\u003c/code\u003e no longer affects it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eAn interactive OAuth login no longer counts against request timeouts\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3635\"\u003e#3635\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe timeout pauses while \u003ccode\u003eOAuthClientProvider\u003c/code\u003e waits on \u003ccode\u003eredirect_handler\u003c/code\u003e and \u003ccode\u003ecallback_handler\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThis fixes \u003ccode\u003eClient(mode=\u0026quot;auto\u0026quot;)\u003c/code\u003e settling on \u003ccode\u003e2025-11-25\u003c/code\u003e when the login took longer than 10 seconds.\u003c/li\u003e\n\u003cli\u003eA request timeout no longer ends a login nobody finishes. Put a limit inside \u003ccode\u003ecallback_handler\u003c/code\u003e if you need one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emax_sse_event_size=\u003c/code\u003e on \u003ccode\u003estreamable_http_client\u003c/code\u003e and \u003ccode\u003eStreamableHttpParameters\u003c/code\u003e. The default stays 1 MiB per SSE event; raise it, or pass \u003ccode\u003eNone\u003c/code\u003e, for larger tool results (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3600\"\u003e#3600\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMCPServer(subscriptions=False)\u003c/code\u003e stops serving \u003ccode\u003esubscriptions/listen\u003c/code\u003e and advertises \u003ccode\u003elistChanged\u003c/code\u003e and \u003ccode\u003esubscribe\u003c/code\u003e as false (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3626\"\u003e#3626\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eServer(get_tool_input_schema=...)\u003c/code\u003e lets a low-level server supply a tool's schema for header validation without running its \u003ccode\u003etools/list\u003c/code\u003e handler (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3630\"\u003e#3630\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eClient.call_tool\u003c/code\u003e re-lists the tools and retries once after a \u003ccode\u003eHeaderMismatch\u003c/code\u003e (\u003ccode\u003e-32020\u003c/code\u003e) rejection (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3627\"\u003e#3627\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ectx: Context[AppState]\u003c/code\u003e works on prompts and resource templates, not only on tools (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3624\"\u003e#3624\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn explicit \u003ccode\u003e\u0026quot;structuredContent\u0026quot;: null\u003c/code\u003e is checked against the output schema instead of being treated as missing (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3621\"\u003e#3621\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003eprogress_callback\u003c/code\u003e that raises no longer fails the call on an in-process \u003ccode\u003eClient(server)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3623\"\u003e#3623\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClient OpenTelemetry spans record JSON-RPC error responses. With \u003ccode\u003emode=\u0026quot;auto\u0026quot;\u003c/code\u003e, connecting to a server without \u003ccode\u003eserver/discover\u003c/code\u003e now shows one \u003ccode\u003eERROR\u003c/code\u003e span for the probe (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3629\"\u003e#3629\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estdio_client\u003c/code\u003e resolves the executable off the event loop on Windows (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3510\"\u003e#3510\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2118f14f8a19bc158d8a1cf90af58d85d187f849\"\u003e\u003ccode\u003e2118f14\u003c/code\u003e\u003c/a\u003e docs: refresh translations for recent English changes (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3636\"\u003e#3636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/ed9b2d61823b3800de4c48abb23b951ad3a50834\"\u003e\u003ccode\u003eed9b2d6\u003c/code\u003e\u003c/a\u003e Stop counting an interactive OAuth login against request timeouts (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3635\"\u003e#3635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/d5cebd13defe97bf5bacb93496f132d4173cda23\"\u003e\u003ccode\u003ed5cebd1\u003c/code\u003e\u003c/a\u003e Keep inline-snapshot disabled when pytest runs in a terminal (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c15566c9dd4828b8082fb7693060e3a0fd67e657\"\u003e\u003ccode\u003ec15566c\u003c/code\u003e\u003c/a\u003e Link What's new to the Header parameters page (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/4d29994023576e4b04e06c9ff2f32757abc50463\"\u003e\u003ccode\u003e4d29994\u003c/code\u003e\u003c/a\u003e Let a newer Deploy Docs run cancel the one in progress (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3633\"\u003e#3633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/0acea605135759a2228a33eaa7d792fea2c2282b\"\u003e\u003ccode\u003e0acea60\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.7.0 to 2.8.0 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3607\"\u003e#3607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c54075ccb8793e9b0d37f0c9e2c58dfd0256c23d\"\u003e\u003ccode\u003ec54075c\u003c/code\u003e\u003c/a\u003e Look the tool schema up by name for Mcp-Param-* validation instead of running...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/9afccae3d0bff4062add01b7fb746634b9aad2a7\"\u003e\u003ccode\u003e9afccae\u003c/code\u003e\u003c/a\u003e Retry a tool call once after a HeaderMismatch rejection (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3627\"\u003e#3627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/cafa33b3530b0af2e4a8467d11f92bc1cb00368e\"\u003e\u003ccode\u003ecafa33b\u003c/code\u003e\u003c/a\u003e Record JSON-RPC error responses on the client OpenTelemetry span (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3629\"\u003e#3629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/0b2fd3ea60efb16b349e8c887cf91bf2f9f773fc\"\u003e\u003ccode\u003e0b2fd3e\u003c/code\u003e\u003c/a\u003e Omit an empty _meta and empty params from outbound requests (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v2.2.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 3.0.5 to 3.0.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epandas 3.0.6\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 3.0.6.\nThis is a patch release in the 3.0.x series and includes some regression fixes and bug fixes. We recommend that all users of the 3.0.x series upgrade to this version. This is also the first release to support Python 3.15.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/docs/whatsnew/v3.0.6.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\u003c/p\u003e\n\u003cp\u003ePandas 3.0 supports Python 3.11 and higher.\nThe release can be installed from PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pandas==3.0.*\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from conda-forge\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge pandas=3.0\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2905718b126579d2cf0fe5bae05bd75facb67d77\"\u003e\u003ccode\u003e2905718\u003c/code\u003e\u003c/a\u003e RLS: 3.0.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3188cede89a060e7d2ca37298e160d1712a8695a\"\u003e\u003ccode\u003e3188ced\u003c/code\u003e\u003c/a\u003e [backport 3.0.x]  BUG: read_csv(sep=None) raised TypeError instead of falling...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f0979054b9bb20fb43dadb8be9c7cd052506a5fb\"\u003e\u003ccode\u003ef097905\u003c/code\u003e\u003c/a\u003e DOC: cleanup 3.0.6 whatsnew + mention Python 3.15 support (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68965\"\u003e#68965\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68969\"\u003e#68969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/4f68223463a6b960b5cdafc10125bf0987dd2698\"\u003e\u003ccode\u003e4f68223\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: fix setting with bool column mask into 1-column DataFra...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e3df0e81f4e1830f0fe833ef83c51d4a511d9d95\"\u003e\u003ccode\u003ee3df0e8\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: full-slice setitem into a pyarrow-backed array shared m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b7735f6070ef031296101acc42a5a30e0f3cc791\"\u003e\u003ccode\u003eb7735f6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/66117\"\u003e#66117\u003c/a\u003e on branch 3.0.x (BUG: interpolate leaving NAs unfilled for...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/bca0b7769ef0bb5e28d220e245c268142c62d637\"\u003e\u003ccode\u003ebca0b77\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: read_csv leaked the string-intern table when a column f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/bca1e5de1f691366cf450c929326e7a35b03218a\"\u003e\u003ccode\u003ebca1e5d\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: prevent external mutation of RangeIndex._data (CoW) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/6\"\u003e#6\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/c95b42cb0c91bd0cadb34429e1df377926087e0d\"\u003e\u003ccode\u003ec95b42c\u003c/code\u003e\u003c/a\u003e [3.0.x] CI: skip cython-lint on pre-commit.ci (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68910\"\u003e#68910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/9cbd884bb9218323777d8237163dea1a30e7e506\"\u003e\u003ccode\u003e9cbd884\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] Backport of some already merged regression fixes (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68447\"\u003e#68447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v3.0.5...v3.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.4 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0b2 2026-09-09\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis pre-release adds full support for Python 3.15 specific features, such as support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e, making use of \u003ca href=\"https://docs.python.org/3.15/library/typing.html#typing.TypeForm\"\u003e\u003ccode\u003eTypeForm\u003c/code\u003e\u003c/a\u003e and stabilizing the \u003ca href=\"https://pydantic.dev/docs/validation/latest/concepts/types/#missing-sentinel\"\u003e\u003ccode\u003eMISSING\u003c/code\u003e sentinel\u003c/a\u003e type.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow any \u003ccode\u003eCoreSchema\u003c/code\u003e to be used as serialization by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13680\"\u003e#13680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e type by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13634\"\u003e#13634\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.14.0b2 (2026-09-09)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0b2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fcdefa7198c4fc94a22eecf1a5b7926e20b9fc8a\"\u003e\u003ccode\u003efcdefa7\u003c/code\u003e\u003c/a\u003e Correct v2.14.0 release date (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13952\"\u003e#13952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c821eaccf9873357477a1e7d2d4d12dd4e161c8a\"\u003e\u003ccode\u003ec821eac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Respect config in \u003ccode\u003eTypeAdapter.json_schemas()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13890\"\u003e#13890\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13951\"\u003e#13951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a656b75d58a80f5033f376f7af17092606bbfde2\"\u003e\u003ccode\u003ea656b75\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13948\"\u003e#13948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b4028f9d87e34750e53be0ba011d70f3c0fcc94e\"\u003e\u003ccode\u003eb4028f9\u003c/code\u003e\u003c/a\u003e Avoid validating URL prefix multiple times in multi host URLs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13945\"\u003e#13945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/69ed168e9ad465eef4c8d81efb152a93b604daf5\"\u003e\u003ccode\u003e69ed168\u003c/code\u003e\u003c/a\u003e Reject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13944\"\u003e#13944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/895c0c285c5cb4c0c7c7a4619a80941c12f2c75f\"\u003e\u003ccode\u003e895c0c2\u003c/code\u003e\u003c/a\u003e Fix datetime parsing in custom validator examples (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13931\"\u003e#13931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d2cbaaab74ba4a26bb66f604199ec9793aab6177\"\u003e\u003ccode\u003ed2cbaaa\u003c/code\u003e\u003c/a\u003e Bump virtualenv from 20.36.1 to 21.7.13 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13943\"\u003e#13943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3fbc25ab2bd4f370f478102652f20aea1f5de0b0\"\u003e\u003ccode\u003e3fbc25a\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e dependencies (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13942\"\u003e#13942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/027b5c714791d5f6e86faea4110ef26f4776648c\"\u003e\u003ccode\u003e027b5c7\u003c/code\u003e\u003c/a\u003e Rebuild incomplete types during serialization inference (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13922\"\u003e#13922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2706d1f6cdd0ca5b941fd5170ecf0254f933e1f6\"\u003e\u003ccode\u003e2706d1f\u003c/code\u003e\u003c/a\u003e Handle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13940\"\u003e#13940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.4...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.51.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.51.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.0\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003eissue 2266\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coverage.html#coverage.Coverage.switch_context\"\u003eCoverage.switch_context()\u003c/a\u003e method now returns the previous context.\u003c/li\u003e\n\u003cli\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003epull 2268\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixes to validation of options and configuration settings:\n\u003cul\u003e\n\u003cli\u003eNegative precision settings now always cause useful error messages (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003epull 2261\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn invalid regex in the \u003ccode\u003e--contexts\u003c/code\u003e option (or the \u003ccode\u003e[report] contexts\u003c/code\u003e setting) reported a confusing “Couldn’t use data file …: user-defined function raised exception” error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003epull 2262\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNon-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e entry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the \u003ccode\u003e[paths]\u003c/code\u003e section (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003epull 2263\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like \u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can’t reach the subprocesses. The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as the entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e slipped through and failed later with “Can’t combine statement coverage data with branch data”. Each named concurrency library is now properly considered (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2270\"\u003epull 2270\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any measured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on Windows. The original extension is now restored on the annotated copy (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003epull 2265\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.0\"\u003ecoverage 7.16.0\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.4\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: in the HTML report, a source file name containing a double quote (legal on POSIX) wasn’t escaped where it’s dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index and prev/next links, so it could close the attribute early and inject markup. Page URLs are now escaped. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: the LCOV report wrote file names and other fields into its line-oriented records without neutralizing control characters. A measured file whose name contained a newline (legal on POSIX) could forge extra records, inflating the coverage seen by tools that read the report. Control characters in a field are now replaced. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eWheels are now provided for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.4\"\u003ecoverage 7.15.4\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.4\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.3\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the combination would be prevented when read from the coverage.py configuration. But using the context API as pytest-cov does, contexts would be silently dropped. Now a warning is issued, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003eJisang Han\u003c/a\u003e. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003eissue 2200\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eA performance improvement in the low-level line number bookkeeping when combining data files, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003eKevin Turcios\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWhen combining files, now path separator slashes will automatically be\nconverted to the local file system style. This makes it less necessary to\ndefine \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems.\nFixes \u003ccode\u003eissue 2266\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe :meth:\u003ccode\u003e.Coverage.switch_context\u003c/code\u003e method now returns the previous context.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.161.5 to 6.168.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ca2a4c6e3c6b979d9fbb5ef9db614885a736d2aa\"\u003e\u003ccode\u003eca2a4c6\u003c/code\u003e\u003c/a\u003e Bump hypothesis version to 6.168.5 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypo...\n\n_Description has been truncated_","html_url":"https://github.com/Interloperok/AI.InfraCalculator/pull/133","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interloperok%2FAI.InfraCalculator/issues/133","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/133/packages"},{"uuid":"5805852517","node_id":"PR_kwDOU6q5oM8AAAABH3dcsA","number":43,"state":"closed","title":"chore(deps)(deps): bump the minor-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-11T23:02:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-11T22:31:12.000Z","updated_at":"2026-10-11T23:02:41.000Z","time_to_close":1884,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): bump","group_name":"minor-updates","update_count":83,"packages":[{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"alembic","old_version":"1.17.0","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"colorlog","old_version":"6.10.1","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"ctranslate2","old_version":"4.6.0","new_version":"4.8.2","repository_url":"https://github.com/OpenNMT/CTranslate2"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"flatbuffers","old_version":"25.9.23","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.66.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.5","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.4","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"hf-xet","old_version":"1.1.10","new_version":"1.7.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.18","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"joblib","old_version":"1.5.2","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"llvmlite","old_version":"0.45.1","new_version":"0.50.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib","old_version":"3.10.7","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"networkx","old_version":"3.5","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numba","old_version":"0.62.1","new_version":"0.68.0"},{"name":"numpy","old_version":"2.2.6","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.23.1","new_version":"1.30.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"opentelemetry-api","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.59b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"prometheus-client","old_version":"0.21.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg","old_version":"3.2.10","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.2.10","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pyannote-metrics","old_version":"4.0.0","new_version":"4.1"},{"name":"pyannoteai-sdk","old_version":"0.3.0","new_version":"0.4.0"},{"name":"pydantic","old_version":"2.12.3","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.4","new_version":"2.50.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"safetensors","old_version":"0.6.2","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.7.2","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.16.2","new_version":"1.17.1","repository_url":"https://github.com/scipy/scipy"},{"name":"soundfile","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"sqlalchemy","old_version":"2.0.44","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.3.1","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tokenizers","old_version":"0.22.1","new_version":"0.23.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torchcodec","old_version":"0.14.0","new_version":"0.17.0","repository_url":"https://github.com/pytorch/torchcodec"},{"name":"torchmetrics","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/Lightning-AI/torchmetrics"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"triton","old_version":"3.7.1","new_version":"3.8.0","repository_url":"https://github.com/triton-lang/triton"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.22.1","new_version":"0.23.0","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wheel","old_version":"0.47.0","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"wrapt","old_version":"2.2.2","new_version":"2.5.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"yt-dlp","old_version":"2026.7.4","new_version":"2026.8.19","repository_url":"https://github.com/yt-dlp/yt-dlp"},{"name":"torch","old_version":"2.13.0","new_version":"2.14.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"openapi-spec-validator","old_version":"0.7.1","new_version":"0.9.0","repository_url":"https://github.com/python-openapi/openapi-spec-validator"},{"name":"ruff","old_version":"0.9.1","new_version":"0.16.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"black","old_version":"26.3.1","new_version":"26.10.0","repository_url":"https://github.com/psf/black"},{"name":"bandit","old_version":"1.8.0","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"nvidia-cudnn-cu12","old_version":"9.10.2.21","new_version":"9.27.0.42"},{"name":"nvidia-cusparselt-cu12","old_version":"0.7.1","new_version":"0.8.1"},{"name":"nvidia-nccl-cu12","old_version":"2.29.3","new_version":"2.32.3"},{"name":"nvidia-nvshmem-cu12","old_version":"3.4.5","new_version":"3.8.0"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.17.0` | `1.20.0` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.5.2` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.10.1` | `6.12.0` |\n| [ctranslate2](https://github.com/OpenNMT/CTranslate2) | `4.6.0` | `4.8.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.143.0` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.9.23` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.66.1` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.5` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.4` | `3.5.6` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.84.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.1.10` | `1.7.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.20` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.6.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.45.1` | `0.50.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.3` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.7` | `3.11.2` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6.1` |\n| [numba](https://numba.pydata.org) | `0.62.1` | `0.68.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.6` | `2.4.6` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.23.1` | `1.30.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.66b1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.0` | `0.26.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.4` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.10` | `3.3.6` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.2.10` | `3.3.6` |\n| pyannote-metrics | `4.0.0` | `4.1` |\n| pyannoteai-sdk | `0.3.0` | `0.4.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.3` | `2.14.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.15.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.4` | `2.50.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.3` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.6.2` | `0.8.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.2` | `1.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.16.2` | `1.17.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.13.1` | `0.14.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.44` | `2.1.4` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.7.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.14.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.1` | `0.23.2` |\n| [torchcodec](https://github.com/pytorch/torchcodec) | `0.14.0` | `0.17.0` |\n| [torchmetrics](https://github.com/Lightning-AI/torchmetrics) | `1.8.2` | `1.9.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.1` |\n| [triton](https://github.com/triton-lang/triton) | `3.7.1` | `3.8.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.54.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.22.1` | `0.23.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.3.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.47.0` | `0.48.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.2.2` | `2.5.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.25.1` |\n| [yt-dlp](https://github.com/yt-dlp/yt-dlp) | `2026.7.4` | `2026.8.19` |\n| [torch](https://github.com/pytorch/pytorch) | `2.13.0` | `2.14.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [openapi-spec-validator](https://github.com/python-openapi/openapi-spec-validator) | `0.7.1` | `0.9.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.1` | `0.16.10` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.10.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.0` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [nvidia-cudnn-cu12](https://developer.nvidia.com/cuda-zone) | `9.10.2.21` | `9.27.0.42` |\n| [nvidia-cusparselt-cu12](https://developer.nvidia.com/cusparselt) | `0.7.1` | `0.8.1` |\n| [nvidia-nccl-cu12](https://developer.nvidia.com/cuda-zone) | `2.29.3` | `2.32.3` |\n| [nvidia-nvshmem-cu12](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.8.0` |\n\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/4dfc926e30eea8d24c1a71602d73c0e9a895c191\"\u003e\u003ccode\u003e4dfc926\u003c/code\u003e\u003c/a\u003e 2.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e perf: use defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/338277badfb25fc38759ce38ab9ea2c20ec1bfff\"\u003e\u003ccode\u003e338277b\u003c/code\u003e\u003c/a\u003e chore: stop tracking .DS_Store files (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/16978694944ed7fb5e7b49a173160144ccac45bc\"\u003e\u003ccode\u003e1697869\u003c/code\u003e\u003c/a\u003e ci: add codspeed benchmark suite for addrinfo reordering hot paths (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/d40a848cd2262b435242646fa8e220300bcd6952\"\u003e\u003ccode\u003ed40a848\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/51d42669b2b94a78c6d4bd059e449b8ef51c6646\"\u003e\u003ccode\u003e51d4266\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.7 to 48.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2df44b3987d3c887a8493ba19259c63588226d6c\"\u003e\u003ccode\u003e2df44b3\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3e3cb615f00bfb4d29c30e0c86c897f4de8fb02d\"\u003e\u003ccode\u003e3e3cb61\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.3 to 9.1.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/922dcd79a66d67fdd98a5f9b7587c4f8cda44653\"\u003e\u003ccode\u003e922dcd7\u003c/code\u003e\u003c/a\u003e chore(deps-ci): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/70461c583a8cf3c6fa85b8c48b8e4b576cee8083\"\u003e\u003ccode\u003e70461c5\u003c/code\u003e\u003c/a\u003e ci: drop .github/FUNDING.yml to inherit org-wide config (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.17.0 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026quot;recreate\u0026quot; operation.  An unnamed\nCHECK constraint can't be reliably carried over in a batch recreate\nas it may refer to columns that are being dropped or changed.  This\nomission was previously a silent operation.   The presence of any\n\u003ccode\u003e~sqlalchemy.schema.CheckConstraint\u003c/code\u003e in\n\u003ccode\u003eOperations.batch_alter_table.table_args\u003c/code\u003e is taken to indicate\nthat the case has been accommodated, and no warning is emitted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1846\"\u003e#1846\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Autogenerate now renders a warning comment above any rendered\n\u003ccode\u003eOperations.drop_constraint()\u003c/code\u003e directive for which the constraint name\nis \u003ccode\u003eNone\u003c/code\u003e, as is the case when a constraint that has no name in the model\nis dropped, most typically within the \u003ccode\u003edowngrade()\u003c/code\u003e function of a\nmigration that adds an unnamed constraint.  A warning is also emitted on\nthe console when the migration script is generated.   The directive\nrequires a non-None name in order to be able to emit a \u0026quot;DROP CONSTRAINT\u0026quot;\ncommand.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/916\"\u003e#916\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where adding a column with a type that generates\nits own CHECK constraint, such as \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or\n\u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e with\n\u003ccode\u003e~sqlalchemy.types.Boolean.create_constraint\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e,\nwould emit the constraint twice when the table was recreated, once under\nthe name generated by the naming convention in use and once under the\nname given to the type.  The constraint is now emitted once, using the\nsame name that would be used outside of batch mode.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1768\"\u003e#1768\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where a CHECK constraint generated by a type such\nas \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or \u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e\nwould lose the name established for it by the naming convention in use\nwhen the table was recreated, as the constraint was regenerated against\nthe temporary table used for the recreate operation.  The naming\nconvention is now resolved against the name of the table being replaced.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `authlib` from 1.7.2 to 1.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrefer \u003ccode\u003eid_token_signed_response_alg\u003c/code\u003e client metadata to guess algs by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/888\"\u003eauthlib/authlib#888\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Catch InvalidKeyIdError in RFC 9068 JWTBearerTokenValidator by \u003ca href=\"https://github.com/liudonggalaxy\"\u003e\u003ccode\u003e@​liudonggalaxy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/891\"\u003eauthlib/authlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: make leeway configurable in JWTBearerTokenValidator by \u003ca href=\"https://github.com/mondi04\"\u003e\u003ccode\u003e@​mondi04\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/903\"\u003eauthlib/authlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add default jti claim to sign_jwt_bearer_assertion by \u003ca href=\"https://github.com/liudonggalaxy\"\u003e\u003ccode\u003e@​liudonggalaxy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/897\"\u003eauthlib/authlib#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oauth): cast sub claim to string in JWTBearerTokenGenerator by \u003ca href=\"https://github.com/levinKaus\"\u003e\u003ccode\u003e@​levinKaus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/911\"\u003eauthlib/authlib#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare lower bounds for dependencies by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/912\"\u003eauthlib/authlib#912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(client): use httpx2 instead of httpx by \u003ca href=\"https://github.com/levinKaus\"\u003e\u003ccode\u003e@​levinKaus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/909\"\u003eauthlib/authlib#909\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RFC7523 malformed claims handling by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/916\"\u003eauthlib/authlib#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix httpx oauth1 binary form data by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/779\"\u003eauthlib/authlib#779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(starlette_client): remove default= keyword from config.get calls by \u003ca href=\"https://github.com/aliaksei-protchanka\"\u003e\u003ccode\u003e@​aliaksei-protchanka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/770\"\u003eauthlib/authlib#770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded client_id parameter to AssertionClient by \u003ca href=\"https://github.com/vilmar-hillow\"\u003e\u003ccode\u003e@​vilmar-hillow\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/476\"\u003eauthlib/authlib#476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oauth): save device credential with authenticated client id by \u003ca href=\"https://github.com/arpitjain099\"\u003e\u003ccode\u003e@​arpitjain099\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/908\"\u003eauthlib/authlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oauth1): correct protocol name in InsecureTransportError description by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/919\"\u003eauthlib/authlib#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(client): client can be flexible with jwt's header by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/922\"\u003eauthlib/authlib#922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oidc): omit claims when the value is None by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/923\"\u003eauthlib/authlib#923\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mondi04\"\u003e\u003ccode\u003e@​mondi04\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/903\"\u003eauthlib/authlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/levinKaus\"\u003e\u003ccode\u003e@​levinKaus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/911\"\u003eauthlib/authlib#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aliaksei-protchanka\"\u003e\u003ccode\u003e@​aliaksei-protchanka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/770\"\u003eauthlib/authlib#770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vilmar-hillow\"\u003e\u003ccode\u003e@​vilmar-hillow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/476\"\u003eauthlib/authlib#476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arpitjain099\"\u003e\u003ccode\u003e@​arpitjain099\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/908\"\u003eauthlib/authlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/919\"\u003eauthlib/authlib#919\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.2...v1.8.0\"\u003ehttps://github.com/authlib/authlib/compare/v1.7.2...v1.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/1a86748b31a2b1940b09cf627d1b70e03d85c077\"\u003e\u003ccode\u003e1a86748\u003c/code\u003e\u003c/a\u003e chore: release 1.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/e4fb941d4959a11e875b34880c41f46ba7cd8c67\"\u003e\u003ccode\u003ee4fb941\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/923\"\u003e#923\u003c/a\u003e from authlib/fix-921\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/9f2cd2e4c8c2d88cd8c7831d2c612ad38a4b0958\"\u003e\u003ccode\u003e9f2cd2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/922\"\u003e#922\u003c/a\u003e from authlib/fix-902\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5d53239e8a0ca7ea1c241e84bfd5fd453203a94a\"\u003e\u003ccode\u003e5d53239\u003c/code\u003e\u003c/a\u003e fix(oidc): omit claims when the value is None\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/772bc72fe8440e6c5dd0a6615fb42d7466f85546\"\u003e\u003ccode\u003e772bc72\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/919\"\u003e#919\u003c/a\u003e from RavSinghChandan/fix-oauth1-insecure-transport-de...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/11794b00375127bbc4397e7ebd46e047c3935b64\"\u003e\u003ccode\u003e11794b0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/908\"\u003e#908\u003c/a\u003e from arpitjain099/chore/device-cred-authenticated-cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/13f2eb0589cec6df53c4e1146b11dc0cdd3012c7\"\u003e\u003ccode\u003e13f2eb0\u003c/code\u003e\u003c/a\u003e fix(client): Added client_id parameter to AssertionClient (\u003ca href=\"https://redirect.github.com/authlib/authlib/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/dde5b7a8015904aba63dad76d7286aa431249783\"\u003e\u003ccode\u003edde5b7a\u003c/code\u003e\u003c/a\u003e fix(client): rollback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/e4aec8c5c1e333951f49ba6aa3fe7487c6fce670\"\u003e\u003ccode\u003ee4aec8c\u003c/code\u003e\u003c/a\u003e fix(client): remove default= keyword from starlette client config.get calls (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/62f41cc2f55c15e658f7a0d2bdcb23feeeb93410\"\u003e\u003ccode\u003e62f41cc\u003c/code\u003e\u003c/a\u003e fix(client): httpx oauth1 binary form data (\u003ca href=\"https://redirect.github.com/authlib/authlib/issues/779\"\u003e#779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.2...v1.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.4 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}...\n\n_Description has been truncated_","html_url":"https://github.com/PatrickFanella/rekolekt/pull/43","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PatrickFanella%2Frekolekt/issues/43","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/43/packages"}],"issue_packages":[{"old_version":"\u003e=0.27.0","new_version":"\u003e=0.54.0","update_type":"minor","path":"/agents/super-hyper-broski-agent","pr_created_at":"2026-10-18T16:21:33.000Z","version_change":"\u003e=0.27.0 → \u003e=0.54.0","issue":{"uuid":"5911580103","node_id":"PR_kwDOR9i09M8AAAABJLPkvA","number":652,"state":"open","title":"chore(deps): update uvicorn requirement from \u003e=0.27.0 to \u003e=0.54.0 in /agents/super-hyper-broski-agent","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-18T16:21:33.000Z","updated_at":"2026-10-18T16:21:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"uvicorn","old_version":"\u003e=0.27.0","new_version":"\u003e=0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":"/agents/super-hyper-broski-agent","ecosystem":"pip"},"body":"Updates the requirements on [uvicorn](https://github.com/Kludex/uvicorn) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.27.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/652","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/652","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/652/packages"}},{"old_version":"0.32.0","new_version":"0.54.0","update_type":"minor","path":"/packages/prospectus-parser","pr_created_at":"2026-10-18T10:24:06.000Z","version_change":"0.32.0 → 0.54.0","issue":{"uuid":"5908542052","node_id":"PR_kwDOT1-A488AAAABJI6Grw","number":14,"state":"open","title":"Bump uvicorn from 0.32.0 to 0.54.0 in /packages/prospectus-parser","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-18T10:24:06.000Z","updated_at":"2026-10-18T10:24:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"uvicorn","old_version":"0.32.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":"/packages/prospectus-parser","ecosystem":"pip"},"body":"Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.32.0 to 0.54.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.32.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uvicorn\u0026package-manager=pip\u0026previous-version=0.32.0\u0026new-version=0.54.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/RADENzzz/coe-nnect/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/RADENzzz%2Fcoe-nnect/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"}},{"old_version":"0.53.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-18T03:08:37.000Z","version_change":"0.53.0 → 0.54.0","issue":{"uuid":"5905640464","node_id":"PR_kwDOVDCNZM8AAAABJGsrAQ","number":48,"state":"open","title":"Bump the minor-and-patch group across 1 directory with 23 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-18T03:08:37.000Z","updated_at":"2026-10-18T03:10:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-and-patch","update_count":23,"packages":[{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"google-auth","old_version":"2.58.0","new_version":"2.62.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-genai","old_version":"2.23.0","new_version":"2.31.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"postgrest","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"propcache","old_version":"0.5.2","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-dotenv","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"realtime","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"starlette","old_version":"1.6.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"storage3","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-auth","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"supabase-functions","old_version":"2.31.0","new_version":"2.32.0","repository_url":"https://github.com/supabase/supabase-py"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"yarl","old_version":"1.24.5","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 23 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.1` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.58.0` | `2.62.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.23.0` | `2.31.0` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [postgrest](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.5.2` | `0.5.4` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3` | `1.2.4` |\n| [realtime](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.8.0` |\n| [storage3](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [supabase-auth](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [supabase-functions](https://github.com/supabase/supabase-py) | `2.31.0` | `2.32.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.5` | `1.25.1` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n\n\nUpdates `charset-normalizer` from 3.5.1 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.5.1...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 50.0.1 to 50.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e50.0.2 - 2026-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 4.0.3.\n* Added ``abi3.abi3t`` wheels for free-threaded CPython 3.15 and later.\n* Updated to PyO3 0.29.2, which fixes building ``cryptography`` on Cygwin and\n  MSYS2.\n\u003cp\u003e.. _v50-0-1:\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4dda5c7fe4ae71b8925f2551910a0ef959df9c7a\"\u003e\u003ccode\u003e4dda5c7\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump for 50.0.2 release + changelog (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15733\"\u003e#15733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/70c881cd7ea97d38df09f57c1117470cd1a5a2f7\"\u003e\u003ccode\u003e70c881c\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump pyo3 to 0.29.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15731\"\u003e#15731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/a8c45c449b8d29908a14561afd45fee8bf27d044\"\u003e\u003ccode\u003ea8c45c4\u003c/code\u003e\u003c/a\u003e [50.0.x] Build abi3.abi3t wheels for CPython 3.15+ (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15496\"\u003e#15496\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15732\"\u003e#15732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/50.0.1...50.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16484\"\u003e#16484\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4dda4625bdc19ce5ae946c152298f70d4d4fc5ed\"\u003e\u003ccode\u003e4dda462\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16485\"\u003e#16485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bf18b23bc75ba25dba7310752a97c1612dcd298e\"\u003e\u003ccode\u003ebf18b23\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5e6a1eec1fbc0acbe0a813e981cfd69539051b52\"\u003e\u003ccode\u003e5e6a1ee\u003c/code\u003e\u003c/a\u003e 🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16484\"\u003e#16484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.58.0 to 2.62.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-auth: v2.62.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.61.0...google-auth-v2.62.0\"\u003e2.62.0\u003c/a\u003e (2026-10-12)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e enable bound ID tokens by default on Cloud Run (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18635\"\u003e#18635\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8b625c4927371992f4569962292299eced040047\"\u003e8b625c4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth: v2.61.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.60.0...google-auth-v2.61.0\"\u003e2.61.0\u003c/a\u003e (2026-10-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e support bound access and ID tokens for GKE (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18594\"\u003e#18594\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9f5fd7bdf0707a17c363482b094ccd70a4358389\"\u003e9f5fd7b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth: v2.60.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.59.1...google-auth-v2.60.0\"\u003e2.60.0\u003c/a\u003e (2026-10-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e Support sync credentials in AsyncAuthorizedSession (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18542\"\u003e#18542\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/379956865248ebc40e5b851ede520056e65abcac\"\u003e3799568\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/5deaacb67a812e7afa0a647ddf744ebdcf59b270\"\u003e\u003ccode\u003e5deaacb\u003c/code\u003e\u003c/a\u003e chore(main): release google-auth 2.62.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18637\"\u003e#18637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8b625c4927371992f4569962292299eced040047\"\u003e\u003ccode\u003e8b625c4\u003c/code\u003e\u003c/a\u003e feat(auth): enable bound ID tokens by default on Cloud Run (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18635\"\u003e#18635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98fc3045ce3e3c5979f7bc7536bc7d0ef8f9a43b\"\u003e\u003ccode\u003e98fc304\u003c/code\u003e\u003c/a\u003e feat(dbapi): wire timeout parameter through Connection to execute_sql (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18484\"\u003e#18484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0cabf7cb08254e3d068c1a4579e9028adf585047\"\u003e\u003ccode\u003e0cabf7c\u003c/code\u003e\u003c/a\u003e test(spanner): increase stale database cleanup cutoff to 3 hours (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18633\"\u003e#18633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ab564738979f07c29ffb5774cdaa47307540ebe0\"\u003e\u003ccode\u003eab56473\u003c/code\u003e\u003c/a\u003e perf(spanner): prune lock and begin event allocations on single-use snapshots...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/78b9da2ed66434099f786b6d785d3855e5457075\"\u003e\u003ccode\u003e78b9da2\u003c/code\u003e\u003c/a\u003e fix(google-cloud-spanner): do not replay DDL statements on transaction retry ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/f18a11eb4308b9a8889166ea3c1246fb8306a906\"\u003e\u003ccode\u003ef18a11e\u003c/code\u003e\u003c/a\u003e feat(db-dtypes): support pandas 3.1 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18590\"\u003e#18590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/590e43da42fea4f08be7b29b3bf63c3c3a33d112\"\u003e\u003ccode\u003e590e43d\u003c/code\u003e\u003c/a\u003e fix(bigquery): accept empty sourceFormat fields (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18472\"\u003e#18472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/05b37756b0c4cb43ae978c928e90b1ff40a07ccd\"\u003e\u003ccode\u003e05b3775\u003c/code\u003e\u003c/a\u003e perf(spanner): optimize single-chunk results and single-row lookups (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18602\"\u003e#18602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a7678fd8c797e20d6f1fe0c8af84e7ded451f923\"\u003e\u003ccode\u003ea7678fd\u003c/code\u003e\u003c/a\u003e fix(spanner): eliminate duplicate metrics capture and measure full streaming ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-v2.58.0...google-auth-v2.62.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-genai` from 2.23.0 to 2.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/releases\"\u003egoogle-genai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.31.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.1...v2.31.0\"\u003e2.31.0\u003c/a\u003e (2026-10-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Add gemini-4-argon to Model enum (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8554b07d0025e19361b7a10a6384cc143f3a8ea9\"\u003e8554b07\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear continuation state and preserve prompt feedback when continuation hop returns no candidates (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a0d809cd838ec02938c1646c47cc3ece2761fc09\"\u003ea0d809c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the function declaration parser for union types. Fixes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3060\"\u003e#3060\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/be32e9e074e6a403621a6d52ae97f81f0777549e\"\u003ebe32e9e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the grounding metadata merging for automatic continuation in generate content and generate content stream (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f1499bb86c707d51b5b2684ff9423653cc74895c\"\u003ef1499bb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake continuation streams retry dropped hops, stop on prompt_feedback, and keep real errors in generate_content (\u003ca href=\"https://github.com/googleapis/python-genai/commit/339a92921ac877d07d34a3646cddefdf9c71565c\"\u003e339a929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch the mTLS endpoint to each transport's SSL context, including plain aiohttp (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f8a469322cf66716ca3345c14516c0daa213ca1c\"\u003ef8a4693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.30.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.0...v2.30.1\"\u003e2.30.1\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConcatenate output_text across multi-step model responses in a turn (\u003ca href=\"https://github.com/googleapis/python-genai/commit/180c3453f91e4734b828534950fa7f8526934b59\"\u003e180c345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.30.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.29.0...v2.30.0\"\u003e2.30.0\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccumulate streaming continuation usage metadata and expose initial_prompt_token_count (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b27f3cde9ebbfe49a00ba2b167f534bc86e46fce\"\u003eb27f3cd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003econtinuation_token\u003c/code\u003e to the Interactions \u003ccode\u003einteraction.status_update\u003c/code\u003e event. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/02db4c595523f5d8545023aa9ede2723985d9343\"\u003e02db4c5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a CONTINUATION_REQUIRED Interaction status (\u003ca href=\"https://github.com/googleapis/python-genai/commit/bf9d6d7ce9ad78a7a5bc9a166c7fbcf2da0623ce\"\u003ebf9d6d7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd billable token counts fields (\u003ca href=\"https://github.com/googleapis/python-genai/commit/6a6501c92392b3780b67a895cb3bdf963c1b2bf4\"\u003e6a6501c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd startOffset/endOffset to Transcription and interimTranscriptTimestampEnabled to RealtimeInputConfig (\u003ca href=\"https://github.com/googleapis/python-genai/commit/c644a948d3279ada98032200f17ba12e04ed0525\"\u003ec644a94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd usage in InteractionStatusUpdate events (\u003ca href=\"https://github.com/googleapis/python-genai/commit/56c3a1a99a8c2bb3ccf914b5f9a1f0a745eb716c\"\u003e56c3a1a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow automatic resumption of continuation token for in generate content and generate content stream. Default behavior for this feature is disabled (\u003ca href=\"https://github.com/googleapis/python-genai/commit/83e43ea082fd101b67a4e61a3c1a12e674881748\"\u003e83e43ea\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e Update Speakeasy generator to v2.948.0, bump CLI to v0.4.2, and apply CLI overlay fixes (\u003ca href=\"https://github.com/googleapis/python-genai/commit/cdcd3dde488b936f68e1b107a40465c1a76658f7\"\u003ecdcd3dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable automatic continuation token resumption for chats module. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9ebf71497338b8cb6edc651d99c91145e36ee7bf\"\u003e9ebf714\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear intermediate CONTINUATION finish_reason in streaming continuation (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8a641d8146941000d8d19df81cfc5d85ee16f370\"\u003e8a641d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not record incomplete continuation stream turns in curated chat history (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b382e01e8e214998c1e28cb26811bfcd0f79c11f\"\u003eb382e01\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egemini-api-cli:\u003c/strong\u003e Remove unsupported 2.5 and 1.6 models from Interactions model options and CLI examples (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe5fb10ec895392dbb1b7f45a76901e7abed9a8b\"\u003efe5fb10\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egenai:\u003c/strong\u003e Deduplicate Flash and Omni descriptions in ModelOption (\u003ca href=\"https://github.com/googleapis/python-genai/commit/33efaad19f9c34c262423731885a6ab9c4760dad\"\u003e33efaad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Restore \u003ccode\u003esuper().model_construct\u003c/code\u003e in \u003ccode\u003eInteraction\u003c/code\u003e model validator (\u003ca href=\"https://github.com/googleapis/python-genai/commit/ccd5dd32b14b119f7d3a3254541add6db493222c\"\u003eccd5dd3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epython:\u003c/strong\u003e Discard stale checkpoint token on non-resumable finish reason (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f44e8eea085027f34b3dcdb58a474b8425da3444\"\u003ef44e8ee\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/python-genai/blob/main/CHANGELOG.md\"\u003egoogle-genai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.1...v2.31.0\"\u003e2.31.0\u003c/a\u003e (2026-10-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Add gemini-4-argon to Model enum (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8554b07d0025e19361b7a10a6384cc143f3a8ea9\"\u003e8554b07\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear continuation state and preserve prompt feedback when continuation hop returns no candidates (\u003ca href=\"https://github.com/googleapis/python-genai/commit/a0d809cd838ec02938c1646c47cc3ece2761fc09\"\u003ea0d809c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the function declaration parser for union types. Fixes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3060\"\u003e#3060\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/python-genai/commit/be32e9e074e6a403621a6d52ae97f81f0777549e\"\u003ebe32e9e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix the grounding metadata merging for automatic continuation in generate content and generate content stream (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f1499bb86c707d51b5b2684ff9423653cc74895c\"\u003ef1499bb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake continuation streams retry dropped hops, stop on prompt_feedback, and keep real errors in generate_content (\u003ca href=\"https://github.com/googleapis/python-genai/commit/339a92921ac877d07d34a3646cddefdf9c71565c\"\u003e339a929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMatch the mTLS endpoint to each transport's SSL context, including plain aiohttp (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f8a469322cf66716ca3345c14516c0daa213ca1c\"\u003ef8a4693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.0...v2.30.1\"\u003e2.30.1\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConcatenate output_text across multi-step model responses in a turn (\u003ca href=\"https://github.com/googleapis/python-genai/commit/180c3453f91e4734b828534950fa7f8526934b59\"\u003e180c345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.29.0...v2.30.0\"\u003e2.30.0\u003c/a\u003e (2026-10-13)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAccumulate streaming continuation usage metadata and expose initial_prompt_token_count (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b27f3cde9ebbfe49a00ba2b167f534bc86e46fce\"\u003eb27f3cd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003econtinuation_token\u003c/code\u003e to the Interactions \u003ccode\u003einteraction.status_update\u003c/code\u003e event. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/02db4c595523f5d8545023aa9ede2723985d9343\"\u003e02db4c5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a CONTINUATION_REQUIRED Interaction status (\u003ca href=\"https://github.com/googleapis/python-genai/commit/bf9d6d7ce9ad78a7a5bc9a166c7fbcf2da0623ce\"\u003ebf9d6d7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd billable token counts fields (\u003ca href=\"https://github.com/googleapis/python-genai/commit/6a6501c92392b3780b67a895cb3bdf963c1b2bf4\"\u003e6a6501c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd startOffset/endOffset to Transcription and interimTranscriptTimestampEnabled to RealtimeInputConfig (\u003ca href=\"https://github.com/googleapis/python-genai/commit/c644a948d3279ada98032200f17ba12e04ed0525\"\u003ec644a94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd usage in InteractionStatusUpdate events (\u003ca href=\"https://github.com/googleapis/python-genai/commit/56c3a1a99a8c2bb3ccf914b5f9a1f0a745eb716c\"\u003e56c3a1a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow automatic resumption of continuation token for in generate content and generate content stream. Default behavior for this feature is disabled (\u003ca href=\"https://github.com/googleapis/python-genai/commit/83e43ea082fd101b67a4e61a3c1a12e674881748\"\u003e83e43ea\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e Update Speakeasy generator to v2.948.0, bump CLI to v0.4.2, and apply CLI overlay fixes (\u003ca href=\"https://github.com/googleapis/python-genai/commit/cdcd3dde488b936f68e1b107a40465c1a76658f7\"\u003ecdcd3dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable automatic continuation token resumption for chats module. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/9ebf71497338b8cb6edc651d99c91145e36ee7bf\"\u003e9ebf714\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear intermediate CONTINUATION finish_reason in streaming continuation (\u003ca href=\"https://github.com/googleapis/python-genai/commit/8a641d8146941000d8d19df81cfc5d85ee16f370\"\u003e8a641d8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not record incomplete continuation stream turns in curated chat history (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b382e01e8e214998c1e28cb26811bfcd0f79c11f\"\u003eb382e01\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egemini-api-cli:\u003c/strong\u003e Remove unsupported 2.5 and 1.6 models from Interactions model options and CLI examples (\u003ca href=\"https://github.com/googleapis/python-genai/commit/fe5fb10ec895392dbb1b7f45a76901e7abed9a8b\"\u003efe5fb10\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003egenai:\u003c/strong\u003e Deduplicate Flash and Omni descriptions in ModelOption (\u003ca href=\"https://github.com/googleapis/python-genai/commit/33efaad19f9c34c262423731885a6ab9c4760dad\"\u003e33efaad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einteractions:\u003c/strong\u003e Restore \u003ccode\u003esuper().model_construct\u003c/code\u003e in \u003ccode\u003eInteraction\u003c/code\u003e model validator (\u003ca href=\"https://github.com/googleapis/python-genai/commit/ccd5dd32b14b119f7d3a3254541add6db493222c\"\u003eccd5dd3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epython:\u003c/strong\u003e Discard stale checkpoint token on non-resumable finish reason (\u003ca href=\"https://github.com/googleapis/python-genai/commit/f44e8eea085027f34b3dcdb58a474b8425da3444\"\u003ef44e8ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise default HTTP timeouts so long-running requests aren't killed client-side (\u003ca href=\"https://github.com/googleapis/python-genai/commit/b006b4bb72b555963181e87a87be2a061d650779\"\u003eb006b4b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResume streaming generation from the latest checkpoint continuation token on mid-stream errors or cutoffs (\u003ca href=\"https://github.com/googleapis/python-genai/commit/90bb32bcd9bca471beb8dcb300401538df3f6f3f\"\u003e90bb32b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate EnvironmentConfig.env schema to map keys to EnvVar or string. (\u003ca href=\"https://github.com/googleapis/python-genai/commit/3108d8c9748eb872ab440de9b3d07264938459ea\"\u003e3108d8c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/6bbead9ec73eee0b2557c4bf07406d3574b01533\"\u003e\u003ccode\u003e6bbead9\u003c/code\u003e\u003c/a\u003e chore(main): release 2.31.0 (\u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3123\"\u003e#3123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/be32e9e074e6a403621a6d52ae97f81f0777549e\"\u003e\u003ccode\u003ebe32e9e\u003c/code\u003e\u003c/a\u003e fix: fix the function declaration parser for union types. Fixes \u003ca href=\"https://redirect.github.com/googleapis/python-genai/issues/3060\"\u003e#3060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/efbe9d720308c80423d24f55da2e9b7f53fdcb17\"\u003e\u003ccode\u003eefbe9d7\u003c/code\u003e\u003c/a\u003e chore: internal change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/339a92921ac877d07d34a3646cddefdf9c71565c\"\u003e\u003ccode\u003e339a929\u003c/code\u003e\u003c/a\u003e fix: make continuation streams retry dropped hops, stop on prompt_feedback, a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/829ec551f1aa82b73a9fc6585b8d46955944dedf\"\u003e\u003ccode\u003e829ec55\u003c/code\u003e\u003c/a\u003e test: retry transient errors for longer in the nightly integration tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/1dbf070287916c2bb2c4352972fd6427a6348ce6\"\u003e\u003ccode\u003e1dbf070\u003c/code\u003e\u003c/a\u003e test: switch the shared integration tests to gemini-3.8-flash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/f1499bb86c707d51b5b2684ff9423653cc74895c\"\u003e\u003ccode\u003ef1499bb\u003c/code\u003e\u003c/a\u003e fix: fix the grounding metadata merging for automatic continuation in generat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/8554b07d0025e19361b7a10a6384cc143f3a8ea9\"\u003e\u003ccode\u003e8554b07\u003c/code\u003e\u003c/a\u003e feat(interactions): add gemini-4-argon to Model enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/a0d809cd838ec02938c1646c47cc3ece2761fc09\"\u003e\u003ccode\u003ea0d809c\u003c/code\u003e\u003c/a\u003e fix: clear continuation state and preserve prompt feedback when continuation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/python-genai/commit/f8a469322cf66716ca3345c14516c0daa213ca1c\"\u003e\u003ccode\u003ef8a4693\u003c/code\u003e\u003c/a\u003e fix: Match the mTLS endpoint to each transport's SSL context, including plain...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.23.0...v2.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.19 to 3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.20 (2026-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d55e65e1a3b1ede7f556bc202738066f5597e249\"\u003e\u003ccode\u003ed55e65e\u003c/code\u003e\u003c/a\u003e Release 3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0c0824a928e50048e59d4ce55fe760dba30528bc\"\u003e\u003ccode\u003e0c0824a\u003c/code\u003e\u003c/a\u003e Pre-release 3.20rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bd7c316a08761c79ba557b5b9e6a3da24d71fa88\"\u003e\u003ccode\u003ebd7c316\u003c/code\u003e\u003c/a\u003e Note Python 3.15 support in the 3.20 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b6cce8523eae3442aba976f01607b1cdf797c6ff\"\u003e\u003ccode\u003eb6cce85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/276\"\u003e#276\u003c/a\u003e from kjd/unicode-18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/9a4bc59e9d5ab89e7916fc0a50650cb55e3faf26\"\u003e\u003ccode\u003e9a4bc59\u003c/code\u003e\u003c/a\u003e Update to Unicode 18.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/dfab5a06affddcc7781a7bbab1cac1bb7d3b4e05\"\u003e\u003ccode\u003edfab5a0\u003c/code\u003e\u003c/a\u003e Merge branch 'python-3.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/417c35496ccbffad4b0a434ac9b563ee6f8fa0a9\"\u003e\u003ccode\u003e417c354\u003c/code\u003e\u003c/a\u003e Read the latest Unicode version from the DerivedAge.txt header instead of the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cd1739200f3bf07871372bcb31c271de136eaccf\"\u003e\u003ccode\u003ecd17392\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/274\"\u003e#274\u003c/a\u003e from kjd/fix-decode-length-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5796d79d44c76a54f03e8938dd22edaa1221c27\"\u003e\u003ccode\u003ec5796d7\u003c/code\u003e\u003c/a\u003e Skip the decode round-trip check for domains past encode's length limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ee690bf133e874351103b9fe838fdda2a7a09f\"\u003e\u003ccode\u003ed6ee690\u003c/code\u003e\u003c/a\u003e Update to Python 3.15 release candidate in CI and add trove classifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.19...v3.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `postgrest` from 2.31.0 to 2.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/supabase/supabase-py/releases\"\u003epostgrest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/supabase/supabase-py/compare/v2.31.0...v2.32.0\"\u003e2.32.0\u003c/a\u003e (2026-10-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efunctions:\u003c/strong\u003e fix invoke option leakage, add method and bytes body support (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1600\"\u003e#1600\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/9dcbc5fdef03477b4c65c1526b861dec55b7b6c2\"\u003e9dcbc5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport new realtime features (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1524\"\u003e#1524\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/80688d1278634b7190fc9e7f57b3e885ff3f027c\"\u003e80688d1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthInvalidJwtError when get_claims JWT has no exp (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1603\"\u003e#1603\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/899302ec39fca876c9b70e01f1344b801ce8b842\"\u003e899302e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthWeakPasswordError for responses without an error code (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1629\"\u003e#1629\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/1f74409d2f08898988efd534e654c5612d0e214a\"\u003e1f74409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e point SDK compliance workflow at the python reusable workflow (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1540\"\u003e#1540\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/b16b16a175be0bfc57cf7af6acac01ef4078590a\"\u003eb16b16a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e unbreak storage tests (service_role for bucket empty) and stop fail-fast cancelling sibling jobs (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2f9ca4446eb691f6a2ef48c68bb24f4d88448774\"\u003e2f9ca44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient_options:\u003c/strong\u003e honor False for boolean options in replace() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/10fb8f9029d4659f1ea874e7154b3ae19a4a1fa1\"\u003e10fb8f9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect invalid feature IDs in sdk-compliance.yaml (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1578\"\u003e#1578\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2a795a79c20936771c67d65302495bb8dfa9b2f3\"\u003e2a795a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehandle non-standard and non-JSON error responses without AttributeError (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1577\"\u003e#1577\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/5b8080af4d4a3d6b3a9491d331a67e8bc115cd9c\"\u003e5b8080a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e align rpc maybe_single with select (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1555\"\u003e#1555\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/0490201fb7f201808d0dfdf521ec17015f67b308\"\u003e0490201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e coerce non-string values in array filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1530\"\u003e#1530\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3433b0db4993445a459c6ed7e497e3bdcc194258\"\u003e3433b0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e escape array-literal elements in cs/cd/contains/contained_by/overlaps (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1593\"\u003e#1593\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/f140cd6aa900bcf1bb633bcd748598bc82c035a5\"\u003ef140cd6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e normalize boolean values in is_() to lowercase literals (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1535\"\u003e#1535\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/21ccd6325f9e09e068696c62721f29c76a348a92\"\u003e21ccd63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve negation for or filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1619\"\u003e#1619\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/c1dc29158569cbcbacbf10f850e198a514d81d6f\"\u003ec1dc291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve text search negation (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1624\"\u003e#1624\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/62a090215b7f389a574767c38d4ab92fb1a82990\"\u003e62a0902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e retry transient failures for HEAD requests (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/bb7ecc5fb86f5f8729c40a3885c6154d9b9f6262\"\u003ebb7ecc5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e serialize filter values in eq() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1591\"\u003e#1591\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8d90cfaf118933a4823f90f4cc3b36e39b73d0bd\"\u003e8d90cfa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e include join_ref on every client-sent channel event (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1626\"\u003e#1626\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8c1a91408b0ca04e9c780fc21b61cb596083ab72\"\u003e8c1a914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e process every key in a presence diff's leaves (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1631\"\u003e#1631\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8913406b5b8dac9b7e6f8a359f36fe078eeb299a\"\u003e8913406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e cache control header and retry safety (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1556\"\u003e#1556\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e9f11419fca9f97cfcd175cf4bb5bdbfc7e17b5a\"\u003ee9f1141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e make list_v2 method's \u003ccode\u003ekey\u003c/code\u003e optional (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e6fba08f6c20fca4048c0f477af1533d196e1038\"\u003ee6fba08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e send camelCase sort params in analytics list (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/11f6cdf324d53d76fab5607698e05abcd9514711\"\u003e11f6cdf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix code of conduct link in CONTRIBUTING (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1538\"\u003e#1538\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3c9890089c7dab5891feb9fdc7872dca9c5a749b\"\u003e3c98900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/supabase/supabase-py/blob/main/CHANGELOG.md\"\u003epostgrest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/supabase/supabase-py/compare/v2.31.0...v2.32.0\"\u003e2.32.0\u003c/a\u003e (2026-10-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003efunctions:\u003c/strong\u003e fix invoke option leakage, add method and bytes body support (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1600\"\u003e#1600\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/9dcbc5fdef03477b4c65c1526b861dec55b7b6c2\"\u003e9dcbc5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport new realtime features (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1524\"\u003e#1524\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/80688d1278634b7190fc9e7f57b3e885ff3f027c\"\u003e80688d1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthInvalidJwtError when get_claims JWT has no exp (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1603\"\u003e#1603\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/899302ec39fca876c9b70e01f1344b801ce8b842\"\u003e899302e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eauth:\u003c/strong\u003e raise AuthWeakPasswordError for responses without an error code (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1629\"\u003e#1629\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/1f74409d2f08898988efd534e654c5612d0e214a\"\u003e1f74409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e point SDK compliance workflow at the python reusable workflow (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1540\"\u003e#1540\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/b16b16a175be0bfc57cf7af6acac01ef4078590a\"\u003eb16b16a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e unbreak storage tests (service_role for bucket empty) and stop fail-fast cancelling sibling jobs (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1601\"\u003e#1601\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2f9ca4446eb691f6a2ef48c68bb24f4d88448774\"\u003e2f9ca44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient_options:\u003c/strong\u003e honor False for boolean options in replace() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1516\"\u003e#1516\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/10fb8f9029d4659f1ea874e7154b3ae19a4a1fa1\"\u003e10fb8f9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect invalid feature IDs in sdk-compliance.yaml (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1578\"\u003e#1578\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/2a795a79c20936771c67d65302495bb8dfa9b2f3\"\u003e2a795a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehandle non-standard and non-JSON error responses without AttributeError (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1577\"\u003e#1577\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/5b8080af4d4a3d6b3a9491d331a67e8bc115cd9c\"\u003e5b8080a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e align rpc maybe_single with select (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1555\"\u003e#1555\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/0490201fb7f201808d0dfdf521ec17015f67b308\"\u003e0490201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e coerce non-string values in array filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1530\"\u003e#1530\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3433b0db4993445a459c6ed7e497e3bdcc194258\"\u003e3433b0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e escape array-literal elements in cs/cd/contains/contained_by/overlaps (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1593\"\u003e#1593\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/f140cd6aa900bcf1bb633bcd748598bc82c035a5\"\u003ef140cd6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e normalize boolean values in is_() to lowercase literals (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1535\"\u003e#1535\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/21ccd6325f9e09e068696c62721f29c76a348a92\"\u003e21ccd63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve negation for or filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1619\"\u003e#1619\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/c1dc29158569cbcbacbf10f850e198a514d81d6f\"\u003ec1dc291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e preserve text search negation (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1624\"\u003e#1624\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/62a090215b7f389a574767c38d4ab92fb1a82990\"\u003e62a0902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e retry transient failures for HEAD requests (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/bb7ecc5fb86f5f8729c40a3885c6154d9b9f6262\"\u003ebb7ecc5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epostgrest:\u003c/strong\u003e serialize filter values in eq() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1591\"\u003e#1591\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8d90cfaf118933a4823f90f4cc3b36e39b73d0bd\"\u003e8d90cfa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e include join_ref on every client-sent channel event (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1626\"\u003e#1626\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8c1a91408b0ca04e9c780fc21b61cb596083ab72\"\u003e8c1a914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erealtime:\u003c/strong\u003e process every key in a presence diff's leaves (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1631\"\u003e#1631\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/8913406b5b8dac9b7e6f8a359f36fe078eeb299a\"\u003e8913406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e cache control header and retry safety (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1556\"\u003e#1556\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e9f11419fca9f97cfcd175cf4bb5bdbfc7e17b5a\"\u003ee9f1141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e make list_v2 method's \u003ccode\u003ekey\u003c/code\u003e optional (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1695\"\u003e#1695\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/e6fba08f6c20fca4048c0f477af1533d196e1038\"\u003ee6fba08\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e send camelCase sort params in analytics list (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1636\"\u003e#1636\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/11f6cdf324d53d76fab5607698e05abcd9514711\"\u003e11f6cdf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix code of conduct link in CONTRIBUTING (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1538\"\u003e#1538\u003c/a\u003e) (\u003ca href=\"https://github.com/supabase/supabase-py/commit/3c9890089c7dab5891feb9fdc7872dca9c5a749b\"\u003e3c98900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/837cf3aa754922380f94d4812bac48cb1ab29ab5\"\u003e\u003ccode\u003e837cf3a\u003c/code\u003e\u003c/a\u003e chore(main): release 2.32.0 (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/279cc639096cecc7da20b29fcaa1f7dfb3326dd1\"\u003e\u003ccode\u003e279cc63\u003c/code\u003e\u003c/a\u003e fix(storage): send camelCase pagination keys in list_indexes (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1633\"\u003e#1633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/11f6cdf324d53d76fab5607698e05abcd9514711\"\u003e\u003ccode\u003e11f6cdf\u003c/code\u003e\u003c/a\u003e fix(storage): send camelCase sort params in analytics list (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1636\"\u003e#1636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/8913406b5b8dac9b7e6f8a359f36fe078eeb299a\"\u003e\u003ccode\u003e8913406\u003c/code\u003e\u003c/a\u003e fix(realtime): process every key in a presence diff's leaves (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1631\"\u003e#1631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/1f74409d2f08898988efd534e654c5612d0e214a\"\u003e\u003ccode\u003e1f74409\u003c/code\u003e\u003c/a\u003e fix(auth): raise AuthWeakPasswordError for responses without an error code (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/c1dc29158569cbcbacbf10f850e198a514d81d6f\"\u003e\u003ccode\u003ec1dc291\u003c/code\u003e\u003c/a\u003e fix(postgrest): preserve negation for or filters (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1619\"\u003e#1619\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/62a090215b7f389a574767c38d4ab92fb1a82990\"\u003e\u003ccode\u003e62a0902\u003c/code\u003e\u003c/a\u003e fix(postgrest): preserve text search negation (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1624\"\u003e#1624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/e6fba08f6c20fca4048c0f477af1533d196e1038\"\u003e\u003ccode\u003ee6fba08\u003c/code\u003e\u003c/a\u003e fix(storage): make list_v2 method's \u003ccode\u003ekey\u003c/code\u003e optional (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1695\"\u003e#1695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/f140cd6aa900bcf1bb633bcd748598bc82c035a5\"\u003e\u003ccode\u003ef140cd6\u003c/code\u003e\u003c/a\u003e fix(postgrest): escape array-literal elements in cs/cd/contains/contained_by/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/supabase/supabase-py/commit/8d90cfaf118933a4823f90f4cc3b36e39b73d0bd\"\u003e\u003ccode\u003e8d90cfa\u003c/code\u003e\u003c/a\u003e fix(postgrest): serialize filter values in eq() (\u003ca href=\"https://redirect.github.com/supabase/supabase-py/issues/1591\"\u003e#1591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/supabase/supabase-py/compare/v2.31.0...v2.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `propcache` from 0.5.2 to 0.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/propcache/releases\"\u003epropcache's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.5.4\u003c/h2\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the release wheels being compiled without optimization since\nversion 0.5.0. The build backend set \u003ccode\u003eCFLAGS\u003c/code\u003e to add\n\u003ccode\u003e-ffile-prefix-map\u003c/code\u003e, which replaced the interpreter's own compiler\nflags instead of extending them, so \u003ccode\u003e-O3\u003c/code\u003e and \u003ccode\u003e-DNDEBUG\u003c/code\u003e were\ndropped; the extra flags now go through \u003ccode\u003eCPPFLAGS\u003c/code\u003e, which is\nappended. Cached property reads are about 1.5x faster than in 0.5.3\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/244\"\u003e#244\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/302\"\u003e#302\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e0.5.3\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a possible crash in the C implementation of \u003ccode\u003ecached_property\u003c/code\u003e\nand \u003ccode\u003eunder_cached_property\u003c/code\u003e on free-threaded Python, where a cached\nvalue could be freed by another thread while it was being read; errors\nraised while looking up the cache are now propagated on all builds,\nand the computed value is no longer leaked if storing it fails\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/297\"\u003e#297\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for free-threaded Python 3.13 -- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/223\"\u003e#223\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated discussion links from the defunct Google Groups forum to\nGitHub Discussions\n-- by :user:\u003ccode\u003egundalow\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/propcache/blob/master/CHANGES.rst\"\u003epropcache's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.5.4\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003e(2026-09-15)\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the release wheels being compiled without optimization since\nversion 0.5.0. The build backend set \u003ccode\u003eCFLAGS\u003c/code\u003e to add\n\u003ccode\u003e-ffile-prefix-map\u003c/code\u003e, which replaced the interpreter's own compiler\nflags instead of extending them, so \u003ccode\u003e-O3\u003c/code\u003e and \u003ccode\u003e-DNDEBUG\u003c/code\u003e were\ndropped; the extra flags now go through \u003ccode\u003eCPPFLAGS\u003c/code\u003e, which is\nappended. Cached property reads are about 1.5x faster than in 0.5.3\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n:issue:\u003ccode\u003e244\u003c/code\u003e, :issue:\u003ccode\u003e302\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch1\u003e0.5.3\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003e(2026-09-15)\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a possible crash in the C implementation of \u003ccode\u003ecached_property\u003c/code\u003e\nand \u003ccode\u003eunder_cached_property\u003c/code\u003e on free-threaded Python, where a cached\nvalue could be freed by another thread while it was being read; errors\nraised while looking up the cache are now propagated on all builds,\nand the computed value is no longer leaked if storing it fails\n-- by :user:\u003ccode\u003ebdraco\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\n:issue:\u003ccode\u003e297\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for free-threaded Python 3.13 -- by :user:\u003ccode\u003eVizonex\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eRelated issues and pull requests on GitHub:\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/cc9882f95c6aadbfe7b88898e3f0230e4a38341a\"\u003e\u003ccode\u003ecc9882f\u003c/code\u003e\u003c/a\u003e Release 0.5.4 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/303\"\u003e#303\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/4ea72db6be74ca0e1ad9028cbc7d8cf14ae76e89\"\u003e\u003ccode\u003e4ea72db\u003c/code\u003e\u003c/a\u003e Pass extra build flags through CPPFLAGS so wheels keep -O3 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/98b92bcd62f42d2b32712bb013a72b6c4cb38ed7\"\u003e\u003ccode\u003e98b92bc\u003c/code\u003e\u003c/a\u003e Bump version to 0.5.4.dev0 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/301\"\u003e#301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/d7b6afaf88549f0b7efb1c4a9335ad3b2dc0dd8e\"\u003e\u003ccode\u003ed7b6afa\u003c/code\u003e\u003c/a\u003e Release 0.5.3 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/298\"\u003e#298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/36b96a5775c0c6d9a35e653e5d685e7777f0e368\"\u003e\u003ccode\u003e36b96a5\u003c/code\u003e\u003c/a\u003e Skip in-build wheel tests off-tag (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/300\"\u003e#300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/e514a4fb48419a8b3df21fae89fcfa808b7a5725\"\u003e\u003ccode\u003ee514a4f\u003c/code\u003e\u003c/a\u003e Drop the deprecated license classifier (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/299\"\u003e#299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/3447e83dbe689384d7e8a717313c513d5bcfb974\"\u003e\u003ccode\u003e3447e83\u003c/code\u003e\u003c/a\u003e Make \u003ccode\u003eunder_cached_property\u003c/code\u003e and \u003ccode\u003ecached_property\u003c/code\u003e safe for free-threading (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/19f4e0e65b281f4eefce67940a7c6bf9ab918212\"\u003e\u003ccode\u003e19f4e0e\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/fe44b455407bbb8ca9521689635c7b6ae0d30d0e\"\u003e\u003ccode\u003efe44b45\u003c/code\u003e\u003c/a\u003e Discussion should be in GH Org (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/propcache/commit/c48781a36e4480835ce67866e26db8881991f8dd\"\u003e\u003ccode\u003ec48781a\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 10.0.1 to 10.1.0 (\u003ca href=\"https://redirect.github.com/aio-libs/propcache/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/propcache/compare/v0.5.2...v0.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 3.0 to 3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v3.11\u003c/h2\u003e\n\u003cp\u003eEnhanced C11 support\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v3.01...release_v3.11\"\u003ehttps://github.com/eliben/pycparser/compare/release_v3.01...release_v3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003erelease_v3.01\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop an unneeded direct build depndency on wheel by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/597\"\u003eeliben/pycparser#597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle integer suffix in #line directive without crashing by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/601\"\u003eeliben/pycparser#601\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate default branch to main by \u003ca href=\"https://github.com/myd7349\"\u003e\u003ccode\u003e@​myd7349\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/602\"\u003eeliben/pycparser#602\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: raise ParseError instead of AssertionError on unmatched '}' by \u003ca href=\"https://github.com/patchwright\"\u003e\u003ccode\u003e@​patchwright\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/604\"\u003eeliben/pycparser#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15 by \u003ca href=\"https://github.com/kytta\"\u003e\u003ccode\u003e@​kytta\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/605\"\u003eeliben/pycparser#605\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty compound literal (type){} raising ParseError by \u003ca href=\"https://github.com/IMGillusion\"\u003e\u003ccode\u003e@​IMGillusion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/606\"\u003eeliben/pycparser#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix compound literal statements in C generator by \u003ca href=\"https://github.com/Rayan-and-beyond\"\u003e\u003ccode\u003e@​Rayan-and-beyond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/607\"\u003eeliben/pycparser#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep the contents of adjacent u8 string literals by \u003ca href=\"https://github.com/SashaMIT\"\u003e\u003ccode\u003e@​SashaMIT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/609\"\u003eeliben/pycparser#609\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v3.00...release_v3.01\"\u003ehttps://github.com/eliben/pycparser/compare/release_v3.00...release_v3.01\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/ccb34399dedf518baac209592518757f367430fe\"\u003e\u003ccode\u003eccb3439\u003c/code\u003e\u003c/a\u003e Prepare for release 3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/1d31981b1f91008a7e7ee7b7143f4654d0847f51\"\u003e\u003ccode\u003e1d31981\u003c/code\u003e\u003c/a\u003e Fix concatenation escapes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/dbcd5fddfb92e639a7c9e3b1b4eeebe503ccd2cc\"\u003e\u003ccode\u003edbcd5fd\u003c/code\u003e\u003c/a\u003e Add missing fake types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/8bc38aa15f76cf6165afb139e7f5711fdae4aa88\"\u003e\u003ccode\u003e8bc38aa\u003c/code\u003e\u003c/a\u003e Fix dropped specifiers in lists\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/17da57c031afeba6a3cd3a52f067a1d476b59641\"\u003e\u003ccode\u003e17da57c\u003c/code\u003e\u003c/a\u003e Fix generation of _Alignas and _Atomic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/61f979c4cea46a333a5fcce4aef8cb33aab95229\"\u003e\u003ccode\u003e61f979c\u003c/code\u003e\u003c/a\u003e Add C11's fake headers and some tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/dfbe88b193e103165dd009b0c0cdf348bd7b35de\"\u003e\u003ccode\u003edfbe88b\u003c/code\u003e\u003c/a\u003e Fix unicode escapes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/74588ec8ce0116ff310cfa77218cdc31a2ea32ef\"\u003e\u003ccode\u003e74588ec\u003c/code\u003e\u003c/a\u003e Unify string literal parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7adecd56efcffa3d086dedf274ce5a2a9d4eff55\"\u003e\u003ccode\u003e7adecd5\u003c/code\u003e\u003c/a\u003e Fix implementation of _Static_assert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/b7f48c8feedf903588e0d49f18574cd194be827e\"\u003e\u003ccode\u003eb7f48c8\u003c/code\u003e\u003c/a\u003e C generation for _Generic\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v3.00...release_v3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce ...\n\n_Description has been truncated_","html_url":"https://github.com/Ashmitshandilya/bubbles/pull/48","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashmitshandilya%2Fbubbles/issues/48","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/48/packages"}},{"old_version":"0.35.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-17T16:23:59.000Z","version_change":"0.35.0 → 0.54.0","issue":{"uuid":"5900529028","node_id":"PR_kwDOR9i09M8AAAABJCwuGQ","number":621,"state":"open","title":"chore(deps): bump the patch-and-minor group across 1 directory with 185 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-17T16:23:59.000Z","updated_at":"2026-10-17T16:24:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-and-minor","update_count":185,"packages":[{"name":"fastapi","old_version":"0.135.3","new_version":"0.143.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.11.10","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.15.0","new_version":"2.16.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.2.1","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"pyjwt","old_version":"2.12.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"authlib","old_version":"1.6.11","new_version":"1.9.1","repository_url":"https://github.com/authlib/authlib"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-distro","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-celery","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langgraph","old_version":"1.2.13","new_version":"1.2.15","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.0.1","new_version":"4.3.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.13","new_version":"0.4.7","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langchain-community","old_version":"0.3.5","new_version":"0.4.2","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"langserve","old_version":"0.2.1","new_version":"0.3.3","repository_url":"https://github.com/langchain-ai/langserve"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"billiard","old_version":"4.2.4","new_version":"4.3.1","repository_url":"https://github.com/celery/billiard"},{"name":"chromadb","old_version":"1.0.15","new_version":"1.5.9","repository_url":"https://github.com/chroma-core/chroma"},{"name":"eth-account","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/ApeWorX/eth-account"},{"name":"eth-keys","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/ApeWorX/eth-keys"},{"name":"aiohttp","old_version":"3.13.4","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"python-socketio","old_version":"5.15.0","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"python-engineio","old_version":"4.12.2","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"discord-py","old_version":"2.5.2","new_version":"2.7.1","repository_url":"https://github.com/Rapptz/discord.py"},{"name":"py-cord","old_version":"2.6.1","new_version":"2.8.1","repository_url":"https://github.com/Pycord-Development/pycord"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"click","old_version":"8.2.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"typer","old_version":"0.16.0","new_version":"0.27.3","repository_url":"https://github.com/fastapi/typer"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"colorlog","old_version":"6.9.0","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.15.0"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"feedparser","old_version":"6.0.11","new_version":"6.0.14","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"numpy","old_version":"2.3.2","new_version":"2.5.4","repository_url":"https://github.com/numpy/numpy"},{"name":"matplotlib","old_version":"3.10.5","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"scipy","old_version":"1.16.1","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.7.1","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"strawberry-graphql","old_version":"0.312.3","new_version":"0.335.0","repository_url":"https://github.com/sponsors/strawberry-graphql"},{"name":"graphql-core","old_version":"3.2.8","new_version":"3.3.0","repository_url":"https://github.com/graphql-python/graphql-core"},{"name":"qiskit","old_version":"2.3.1","new_version":"2.5.2","repository_url":"https://github.com/Qiskit/qiskit"},{"name":"networkx","old_version":"3.5","new_version":"3.7","repository_url":"https://github.com/networkx/networkx"},{"name":"onnxruntime","old_version":"1.22.1","new_version":"1.31.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"pytest","old_version":"9.0.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-benchmark","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.169.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"black","old_version":"26.3.1","new_version":"26.10.1","repository_url":"https://github.com/psf/black"},{"name":"ruff","old_version":"0.9.0","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"pylint","old_version":"4.0.5","new_version":"4.1.3","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"semgrep","old_version":"1.92.0","new_version":"1.180.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"autogen","old_version":"0.5.0","new_version":"0.14.1","repository_url":"https://github.com/ag2ai/ag2classic"},{"name":"fakeredis","old_version":"2.33.0","new_version":"2.40.0","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"safety","old_version":"3.2.0","new_version":"3.8.1","repository_url":"https://github.com/pyupio/safety"},{"name":"accelerate","old_version":"1.10.0","new_version":"1.15.0","repository_url":"https://github.com/huggingface/accelerate"},{"name":"bitsandbytes","old_version":"0.46.1","new_version":"0.50.2","repository_url":"https://github.com/bitsandbytes-foundation/bitsandbytes"},{"name":"langchain-text-splitters","old_version":"1.1.1","new_version":"1.1.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.7.16","new_version":"0.14.8","repository_url":"https://github.com/langchain-ai/langsmith-python"},{"name":"nltk","old_version":"3.9.1","new_version":"3.10.3","repository_url":"https://github.com/nltk/nltk"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.65.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tokenizers","old_version":"0.21.4","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.8.0","new_version":"2.14.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"amqp","old_version":"5.3.1","new_version":"5.4.1","repository_url":"https://github.com/celery/py-amqp"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"arq","old_version":"0.27.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.4","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"boto3","old_version":"1.42.64","new_version":"1.43.113","repository_url":"https://github.com/boto/boto3"},{"name":"build","old_version":"1.3.0","new_version":"1.6.1","repository_url":"https://github.com/pypa/build"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click-repl","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/click-contrib/click-repl"},{"name":"contourpy","old_version":"1.3.3","new_version":"1.4.0","repository_url":"https://github.com/contourpy/contourpy"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"dnspython","old_version":"2.8.0","new_version":"2.9.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"fabric","old_version":"3.2.2","new_version":"3.2.3","repository_url":"https://github.com/fabric/fabric"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.7.0"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.67.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"fsspec","old_version":"2026.6.0","new_version":"2026.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geographiclib","old_version":"2.0","new_version":"2.1","repository_url":"https://github.com/geographiclib/geographiclib-python"},{"name":"google-auth","old_version":"2.40.3","new_version":"2.62.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.5","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.74.0","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.4.2","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httptools","old_version":"0.6.4","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jiter","old_version":"0.10.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.1","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpatch","old_version":"1.33","new_version":"1.35","repository_url":"https://github.com/stefankoegl/python-json-patch"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.2.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.25.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.3.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.3","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"narwhals","old_version":"2.0.1","new_version":"2.27.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"nodeenv","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"orjson","old_version":"3.11.7","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pathspec","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"ping3","old_version":"5.1.5","new_version":"5.1.6","repository_url":"https://github.com/kyan001/ping3"},{"name":"pip-api","old_version":"0.0.34","new_version":"0.0.35","repository_url":"https://github.com/di/pip-api"},{"name":"pip-tools","old_version":"7.5.3","new_version":"7.6.2","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"platformdirs","old_version":"4.9.4","new_version":"4.13.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.3.2","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pybase64","old_version":"1.4.2","new_version":"1.5.1","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pycodestyle","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypika","old_version":"0.48.9","new_version":"0.51.1","repository_url":"https://github.com/kayak/pypika"},{"name":"pyproject-hooks","old_version":"1.2.0","new_version":"1.3.3","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"ruamel-yaml","old_version":"0.18.14","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"rustworkx","old_version":"0.17.1","new_version":"0.18.1","repository_url":"https://github.com/Qiskit/rustworkx"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"safehttpx","old_version":"0.1.6","new_version":"0.2.0","repository_url":"https://github.com/gradio-app/safehttpx"},{"name":"smmap","old_version":"5.0.2","new_version":"5.0.3","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"starlette","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"stevedore","old_version":"5.4.1","new_version":"5.9.1"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tornado","old_version":"6.5.9","new_version":"6.5.10","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20261006","repository_url":"https://github.com/python/typeshed"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.4","repository_url":"https://github.com/regebro/tzlocal"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.9.2","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wheel","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"yarl","old_version":"1.20.1","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"truststore","old_version":"0.10.4","new_version":"0.10.5","repository_url":"https://github.com/sethmlarson/truststore"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-and-minor group with 185 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.143.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.54.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.10` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.15.0` | `2.16.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.1.4` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.32.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.13` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.2.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.0` | `2.15.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.11` | `1.9.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.26.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-instrumentation-celery](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.45.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.66b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.66b1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.13` | `1.2.15` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.0.1` | `4.3.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.13` | `0.4.7` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.5` | `0.4.2` |\n| [langserve](https://github.com/langchain-ai/langserve) | `0.2.1` | `0.3.3` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [billiard](https://github.com/celery/billiard) | `4.2.4` | `4.3.1` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.15` | `1.5.9` |\n| [eth-account](https://github.com/ApeWorX/eth-account) | `0.13.0` | `0.14.0` |\n| [eth-keys](https://github.com/ApeWorX/eth-keys) | `0.7.1` | `0.8.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.4` | `3.14.5` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.15.0` | `5.17.0` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.2` | `4.14.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.32` |\n| [discord-py](https://github.com/Rapptz/discord.py) | `2.5.2` | `2.7.1` |\n| [py-cord](https://github.com/Pycord-Development/pycord) | `2.6.1` | `2.8.1` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.5.0` |\n| [typer](https://github.com/fastapi/typer) | `0.16.0` | `0.27.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.4` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.9.0` | `6.12.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.11` | `6.0.14` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.2` | `2.5.4` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.5` | `3.11.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.16.1` | `1.18.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.1` | `1.9.1` |\n| [strawberry-graphql](https://github.com/sponsors/strawberry-graphql) | `0.312.3` | `0.335.0` |\n| [graphql-core](https://github.com/graphql-python/graphql-core) | `3.2.8` | `3.3.0` |\n| [qiskit](https://github.com/Qiskit/qiskit) | `2.3.1` | `2.5.2` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.7` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.22.1` | `1.31.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.5` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.6` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.1.1` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.1.0` | `5.3.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.169.1` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.10.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.0` | `0.17.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.5` | `4.1.3` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.92.0` | `1.180.0` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [autogen](https://github.com/ag2ai/ag2classic) | `0.5.0` | `0.14.1` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.33.0` | `2.40.0` |\n| [safety](https://github.com/pyupio/safety) | `3.2.0` | `3.8.1` |\n| [accelerate](https://github.com/huggingface/accelerate) | `1.10.0` | `1.15.0` |\n| [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes) | `0.46.1` | `0.50.2` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.1` | `1.1.3` |\n| [langsmith](https://github.com/langchain-ai/langsmith-python) | `0.7.16` | `0.14.8` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.10.3` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.8.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.65.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.4` | `0.23.3` |\n| [torch](https://github.com/pytorch/pytorch) | `2.8.0` | `2.14.1` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [amqp](https://github.com/celery/py-amqp) | `5.3.1` | `5.4.1` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [arq](https://github.com/python-arq/arq) | `0.27.0` | `0.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.4` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [boto3](https://github.com/boto/boto3) | `1.42.64` | `1.43.113` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.6.1` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.5.2` |\n| [click-repl](https://github.com/click-contrib/click-repl) | `0.3.0` | `0.4.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.3` | `1.4.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.2` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.8.0` | `2.9.0` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [fabric](https://github.com/fabric/fabric) | `3.2.2` | `3.2.3` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.5` |\n| [flask-socketio](https://code.miguelgrinberg.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.7.0` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.67.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.6.0` | `2026.9.0` |\n| [geographiclib](https://github.com/geographiclib/geographiclib-python) | `2.0` | `2.1` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.40.3` | `2.62.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.5` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.6` |\n| [grpcio](https://github.com/grpc/grpc) | `1.74.0` | `1.84.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.4.2` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.9.0` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.1` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.10.0` | `0.17.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.6.0` |\n| [jsonpatch](https://github.com/stefankoegl/python-json-patch) | `1.33` | `1.35` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.2.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.5.1` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.3` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.4` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.3.1` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.3` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.0.1` | `2.27.1` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.10.0` | `1.11.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.13.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.1.0` | `1.1.1` |\n| [ping3](https://github.com/kyan001/ping3) | `5.1.5` | `5.1.6` |\n| [pip-api](https://github.com/di/pip-api) | `0.0.34` | `0.0.35` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.3` | `7.6.2` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.4` | `4.13.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.5.4` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.2` | `1.5.1` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.14.0` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.10.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.3` |\n| [pypika](https://github.com/kayak/pypika) | `0.48.9` | `0.51.1` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.2.0` | `1.3.3` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.5` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| ruamel-yaml | `0.18.14` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [rustworkx](https://github.com/Qiskit/rustworkx) | `0.17.1` | `0.18.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.19.2` |\n| [safehttpx](https://github.com/gradio-app/safehttpx) | `0.1.6` | `0.2.0` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [starlette](https://github.com/Kludex/starlette) | `1.7.0` | `1.8.0` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.4.1` | `5.9.1` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.13.3` | `0.15.1` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.9` | `6.5.10` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20261006` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.16.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.9.2` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.2` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.2` | `0.48.0` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.20.1` | `1.25.1` |\n| [truststore](https://github.com/sethmlarson/truststore) | `0.10.4` | `0.10.5` |\n\n\nUpdates `fastapi` from 0.135.3 to 0.143.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16484\"\u003e#16484\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4dda4625bdc19ce5ae946c152298f70d4d4fc5ed\"\u003e\u003ccode\u003e4dda462\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16485\"\u003e#16485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bf18b23bc75ba25dba7310752a97c1612dcd298e\"\u003e\u003ccode\u003ebf18b23\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5e6a1eec1fbc0acbe0a813e981cfd69539051b52\"\u003e\u003ccode\u003e5e6a1ee\u003c/code\u003e\u003c/a\u003e 🐛 Fix included route metadata in \u003ccode\u003eiter_route_contexts()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16484\"\u003e#16484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.3...0.143.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.35.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.35.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.10 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.10...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.15.0 to 2.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.16.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003eBreaking changes and behavior changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.10 is no longer supported\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1003\"\u003e#1003\u003c/a\u003e). pydantic-settings now requires Python 3.11+, since 3.10 reaches end of life this month. The \u003ccode\u003etomli\u003c/code\u003e fallback is gone in favor of stdlib \u003ccode\u003etomllib\u003c/code\u003e; the \u003ccode\u003etoml\u003c/code\u003e extra is kept as an empty extra so \u003ccode\u003epip install pydantic-settings[toml]\u003c/code\u003e keeps working.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003epython-dotenv\u0026gt;=1.2.2\u003c/code\u003e is now required\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/971\"\u003e#971\u003c/a\u003e) to pick up the fix for CVE-2026-28684.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAliases are ignored in every source when \u003ccode\u003evalidate_by_alias=False\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1033\"\u003e#1033\u003c/a\u003e). Env vars, secrets, CLI flags and defaults now use only field names, matching pydantic. An env var named after the alias is now ignored instead of raising \u003ccode\u003eextra_forbidden\u003c/code\u003e, and the CLI exposes \u003ccode\u003e--apple\u003c/code\u003e rather than \u003ccode\u003e--pomo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003evalidation_alias\u003c/code\u003e takes precedence over \u003ccode\u003ealias\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1038\"\u003e#1038\u003c/a\u003e). When the two differ, values from JSON/YAML/TOML files and the CLI were silently ignored; they now load. CLI help lists the \u003ccode\u003evalidation_alias\u003c/code\u003e flag first, and \u003ccode\u003eCliApp.serialize\u003c/code\u003e emits it.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCLI case-insensitivity only lowercases registered options\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1036\"\u003e#1036\u003c/a\u003e). With \u003ccode\u003ecase_sensitive=False\u003c/code\u003e, args after \u003ccode\u003e--\u003c/code\u003e and those captured by \u003ccode\u003eCliUnknownArgs\u003c/code\u003e keep their case (\u003ccode\u003e-Xmx4G\u003c/code\u003e no longer becomes \u003ccode\u003e-xmx4g\u003c/code\u003e). Unrecognized options are now reported as typed (\u003ccode\u003e--NOPE\u003c/code\u003e instead of \u003ccode\u003e--nope\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eJSON and YAML config files are read as UTF-8 by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/955\"\u003e#955\u003c/a\u003e) instead of the locale encoding, completing the secrets-file fix from 2.15.0. \u003ccode\u003ejson_file_encoding\u003c/code\u003e/\u003ccode\u003eyaml_file_encoding\u003c/code\u003e still override it.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDiscriminated union defaults are partially updated again\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/997\"\u003e#997\u003c/a\u003e). This reverts the 2.15.0 regression with \u003ccode\u003enested_model_default_partial_update=True\u003c/code\u003e: the default is only dropped when the incoming value selects a \u003cem\u003edifferent\u003c/em\u003e union member.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.15 and pydantic 2.14 support\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1026\"\u003e#1026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1029\"\u003e#1029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1022\"\u003e#1022\u003c/a\u003e). pydantic 2.14 broke \u003ccode\u003eCliApp.run\u003c/code\u003e and \u003ccode\u003evalidate_by_alias=False\u003c/code\u003e handling; both are fixed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCached settings instances\u003c/strong\u003e via \u003ccode\u003eSettings.settings_cached()\u003c/code\u003e and \u003ccode\u003eSettings.settings_clear_cache()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/952\"\u003e#952\u003c/a\u003e). These give you a process-local singleton per settings class without hand-rolling \u003ccode\u003elru_cache\u003c/code\u003e wrappers. Calling the class directly still builds a fresh instance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAWS Systems Manager Parameter Store source\u003c/strong\u003e — \u003ccode\u003eAWSSystemsManagerSettingsSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/941\"\u003e#941\u003c/a\u003e). It recursively reads every parameter under an \u003ccode\u003essm_path\u003c/code\u003e, with \u003ccode\u003e/\u003c/code\u003e mapping onto nested models. Install it with the new \u003ccode\u003eaws-systems-manager\u003c/code\u003e extra.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eenv_file_depth\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/940\"\u003e#940\u003c/a\u003e) lets a relative \u003ccode\u003eenv_file\u003c/code\u003e be found in parent directories, mirroring \u003ccode\u003epyproject_toml_depth\u003c/code\u003e. This is useful when scripts run from a subdirectory of a monorepo. It defaults to \u003ccode\u003e0\u003c/code\u003e, which keeps the current behavior.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eCliVariadicArg\u003c/code\u003e for named variadic options\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/949\"\u003e#949\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/958\"\u003e#958\u003c/a\u003e). It accepts \u003ccode\u003e--param a b c\u003c/code\u003e in addition to repeated \u003ccode\u003e--param a --param b\u003c/code\u003e. Required fields need at least one value.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eCLI\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCliApp.serialize\u003c/code\u003e output now round-trips through \u003ccode\u003eCliApp.run\u003c/code\u003e for enums, tuples, dates and \u003ccode\u003eDecimal\u003c/code\u003es (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/988\"\u003e#988\u003c/a\u003e), explicit \u003ccode\u003eNone\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/981\"\u003e#981\u003c/a\u003e), empty containers (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1008\"\u003e#1008\u003c/a\u003e), \u003ccode\u003eCliVariadicArg\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/976\"\u003e#976\u003c/a\u003e) and populated \u003ccode\u003eCliUnknownArgs\u003c/code\u003e fields, which previously raised \u003ccode\u003eIndexError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/992\"\u003e#992\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEmpty JSON arrays (\u003ccode\u003e--items []\u003c/code\u003e) now give an empty list instead of \u003ccode\u003e['']\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/994\"\u003e#994\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTuples, \u003ccode\u003efrozenset\u003c/code\u003e, \u003ccode\u003eMutableSequence\u003c/code\u003e and other collection subtypes are now treated as repeatable/variadic options (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/972\"\u003e#972\u003c/a\u003e), and so are named collection type aliases such as \u003ccode\u003eTypeAliasType('Addrs', list[IPvAnyAddress])\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1032\"\u003e#1032\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecli_exit_on_error=False\u003c/code\u003e is now honored in \u003ccode\u003eCliSubCommand\u003c/code\u003e parsers, which raise \u003ccode\u003eSettingsError\u003c/code\u003e instead of exiting (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/977\"\u003e#977\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliSubCommand\u003c/code\u003e aliases keep their case with \u003ccode\u003ecase_sensitive=False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/989\"\u003e#989\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEach \u003ccode\u003eCliUnknownArgs\u003c/code\u003e field now receives only its own subcommand's leftover args (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1004\"\u003e#1004\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliApp.format_help\u003c/code\u003e no longer crashes when \u003ccode\u003ecli_prefix\u003c/code\u003e is set in \u003ccode\u003emodel_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/945\"\u003e#945\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eType aliases and parsing\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNamed union type aliases (\u003ccode\u003eTypeAliasType('V', list[int] | str)\u003c/code\u003e) now decode like their inline equivalents in env and dotenv sources, including under \u003ccode\u003eOptional\u003c/code\u003e, \u003ccode\u003eAnnotated\u003c/code\u003e and custom validation aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1006\"\u003e#1006\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1030\"\u003e#1030\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1041\"\u003e#1041\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eResolving a named \u003ccode\u003eAnnotated\u003c/code\u003e type alias no longer mutates shared \u003ccode\u003eFieldInfo\u003c/code\u003e metadata, which made validators run twice on subclasses or after \u003ccode\u003emodel_rebuild()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/979\"\u003e#979\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA bare single-segment \u003ccode\u003eAliasPath('SOME_KEY')\u003c/code\u003e no longer tries to JSON-decode plain string values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/980\"\u003e#980\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecollections.abc.Set\u003c/code\u003e/\u003ccode\u003eMutableSet\u003c/code\u003e/\u003ccode\u003etyping.AbstractSet\u003c/code\u003e fields now JSON-decode env values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/973\"\u003e#973\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA bare \u003ccode\u003etyping.Dict\u003c/code\u003e field with \u003ccode\u003eenv_nested_delimiter\u003c/code\u003e no longer raises \u003ccode\u003eIndexError\u003c/code\u003e, which was a regression in 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1009\"\u003e#1009\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eCase-insensitive matching now works for nested pydantic dataclasses (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1010\"\u003e#1010\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDotenv, secrets and config files\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWith \u003ccode\u003eextra='allow'\u003c/code\u003e, a non-lowercase \u003ccode\u003eenv_prefix\u003c/code\u003e is now stripped from dotenv extras (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/959\"\u003e#959\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/968\"\u003e#968\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esecrets_case_sensitive=True\u003c/code\u003e is now honored on Windows (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1001\"\u003e#1001\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn empty JSON config file is treated as an empty mapping instead of crashing (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/947\"\u003e#947\u003c/a\u003e), matching YAML and TOML.\u003c/li\u003e\n\u003cli\u003eTOML table headers: \u003ccode\u003e~\u003c/code\u003e paths are now expanded when checking that the file exists (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1034\"\u003e#1034\u003c/a\u003e), and an explicit \u003ccode\u003etoml_table_header=()\u003c/code\u003e now overrides the model config to read the file root (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1027\"\u003e#1027\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCloud sources\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAzure Key Vault and GCP Secret Manager now honor \u003ccode\u003eenv_parse_none_str\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1019\"\u003e#1019\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1040\"\u003e#1040\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAzure Key Vault: \u003ccode\u003edash_to_underscore=True\u003c/code\u003e now works for nested model fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/1025\"\u003e#1025\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e now validates its specific constructor arguments (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/975\"\u003e#975\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/8c259f41b49b4cefbe4fb676d3c1f52dddd3cca8\"\u003e\u003ccode\u003e8c259f4\u003c/code\u003e\u003c/a\u003e Prepare release 2.16.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4bc667ada383aca4df00304cd171f327a9fae163\"\u003e\u003ccode\u003e4bc667a\u003c/code\u003e\u003c/a\u003e Keep case of non-option CLI args when case_sensitive=False (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f75a8057a5fafe4aef3a042c2adf367c6987f73f\"\u003e\u003ccode\u003ef75a805\u003c/code\u003e\u003c/a\u003e Simplify alias resolution branch and test alias with AliasChoices/AliasPath (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/cfdc5585e821e84905905027de68a0188213537a\"\u003e\u003ccode\u003ecfdc558\u003c/code\u003e\u003c/a\u003e Honor env_parse_none_str for GCP Secret Manager (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/081d39f9c73f46e68bc2bef75a23f7d84ed0c377\"\u003e\u003ccode\u003e081d39f\u003c/code\u003e\u003c/a\u003e Fix config file and CLI values being ignored when alias differs from validati...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/c46ebc4cc599c09f3692f4d2e82a8f0bb5433f3a\"\u003e\u003ccode\u003ec46ebc4\u003c/code\u003e\u003c/a\u003e Expand home paths when checking TOML table headers (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/6ea85e68532ed4365d7e43509369f41b5820ac74\"\u003e\u003ccode\u003e6ea85e6\u003c/code\u003e\u003c/a\u003e Decode optional Annotated named union aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ca9d7c4d7440ca35edff91a0e947f96e6381d890\"\u003e\u003ccode\u003eca9d7c4\u003c/code\u003e\u003c/a\u003e Fix JSON decoding for optional named union aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/b6ddda2c8db5d8b0c13af7bafab8502ed7ea072c\"\u003e\u003ccode\u003eb6ddda2\u003c/code\u003e\u003c/a\u003e Fix CLI parsing for named collection type aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1032\"\u003e#1032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/bedb60e2cc253be2ae11003a51108c535a58757c\"\u003e\u003ccode\u003ebedb60e\u003c/code\u003e\u003c/a\u003e Honor explicit empty TOML table header overrides (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/1027\"\u003e#1027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.15.0...v2.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.48 to 2.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.4\u003c/h1\u003e\n\u003cp\u003eReleased: October 7, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [regression]\u003c/strong\u003e Fixed regression caused by \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13333\"\u003e#13333\u003c/a\u003e where assigning a\n\u003ccode\u003eMetaData\u003c/code\u003e object to the \u003ccode\u003emetadata\u003c/code\u003e attribute of a mapped\nDeclarative class, in order to place that class's \u003ccode\u003eTable\u003c/code\u003e in a\n\u003ccode\u003eMetaData\u003c/code\u003e collection other than that of the\n\u003ccode\u003e_orm.registry\u003c/code\u003e, would emit a warning that the attribute name\n\u003ccode\u003emetadata\u003c/code\u003e should be left reserved.  The warning is now emitted only\nwhen the \u003ccode\u003emetadata\u003c/code\u003e attribute is assigned to an object other than a\n\u003ccode\u003eMetaData\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13659\"\u003e#13659\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug] [regression]\u003c/strong\u003e Fixed regression from the 1.4 series where the DBAPI cursor used for a\ncompiled statement that returns no rows, which includes DDL constructs\nsuch as \u003ccode\u003eCreateTable\u003c/code\u003e and \u003ccode\u003eDropTable\u003c/code\u003e as well as the\nSAVEPOINT, ROLLBACK TO SAVEPOINT and RELEASE SAVEPOINT statements emitted\nby \u003ccode\u003e_engine.Connection.begin_nested()\u003c/code\u003e, was not closed after\nexecution, and was instead left to be released when garbage collected.\nThe cursor is now closed immediately, as was the case in 1.3 and as is\nalready the case for INSERT, UPDATE, DELETE and \u003ccode\u003e_sql.text()\u003c/code\u003e\nstatements.\u003c/p\u003e\n\u003cp\u003eThis change is also \u003cstrong\u003ebackported\u003c/strong\u003e to: 2.0.55\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13640\"\u003e#13640\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Fixed issue in the\n\u003ccode\u003e_engine.Connection.execution_options.logging_token\u003c/code\u003e option\nwhere setting the value to \u003ccode\u003eNone\u003c/code\u003e or another false value would raise\n\u003ccode\u003eAttributeError\u003c/code\u003e if a logging token had not already been established on\nthat \u003ccode\u003e_engine.Connection\u003c/code\u003e, such as on a newly checked out\nconnection, when the option was set at the \u003ccode\u003e_engine.Engine\u003c/code\u003e level,\nor when the token was reset to \u003ccode\u003eNone\u003c/code\u003e more than once.  Regression\nintroduced in 2.0.30 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11210\"\u003e#11210\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis change is also \u003cstrong\u003ebackported\u003c/strong\u003e to: 2.0.55\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13641\"\u003e#13641\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug] [regression]\u003c/strong\u003e Fixed regression where iterating a \u003ccode\u003eResult\u003c/code\u003e directly would create\nreference cycles that prevented the \u003ccode\u003eResult\u003c/code\u003e along with the DBAPI\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.18.4 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026qu...\n\n_Description has been truncated_","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/621","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/621","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/621/packages"}},{"old_version":"0.39.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-17T15:55:32.000Z","version_change":"0.39.0 → 0.54.0","issue":{"uuid":"5900221347","node_id":"PR_kwDOTn0IFs8AAAABJChWcQ","number":37,"state":"open","title":"Bump the pip-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-17T15:55:32.000Z","updated_at":"2026-10-17T16:24:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-dependencies","update_count":27,"packages":[{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"argon2-cffi-bindings","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/hynek/argon2-cffi-bindings"},{"name":"click","old_version":"8.1.8","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"dnspython","old_version":"2.8.0","new_version":"2.9.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"greenlet","old_version":"3.2.5","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.18","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pwdlib","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/frankie567/pwdlib"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.16.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pymysql","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/PyMySQL/PyMySQL"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"sqlalchemy","old_version":"2.0.51","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"tomli","old_version":"2.4.1","new_version":"2.5.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"uvicorn","old_version":"0.39.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.22.1","new_version":"0.23.0","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"17.2","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-dependencies group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [argon2-cffi-bindings](https://github.com/hynek/argon2-cffi-bindings) | `25.1.0` | `26.1.0` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.2` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.8.0` | `2.9.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.5` | `3.5.6` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.1` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pwdlib](https://github.com/frankie567/pwdlib) | `0.3.0` | `0.3.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.16.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.50.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pymysql](https://github.com/PyMySQL/PyMySQL) | `1.2.0` | `1.2.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.4` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.51` | `2.1.4` |\n| [tomli](https://github.com/hukkin/tomli) | `2.4.1` | `2.5.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.39.0` | `0.54.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.22.1` | `0.23.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.3.0` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `17.2` |\n\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argon2-cffi-bindings` from 25.1.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/releases\"\u003eargon2-cffi-bindings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eBig and scary release! We've switched from \u003cem\u003esetuptools\u003c/em\u003e to \u003cem\u003escikit-build-core\u003c/em\u003e and added wheels for \u003cem\u003epyemscripten\u003c/em\u003e and (provisionally) RISC-V.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://kraken.tech\"\u003eKraken Tech\u003c/a\u003e (@\u003ca href=\"https://github.com/kraken-tech\"\u003ekraken-tech\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://www.testmuai.com\"\u003eTestMu AI Open Source Office (Formerly LambdaTest)\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://www.todoist.com/\"\u003eTodoist Inc\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://miketheman.dev\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), \u003ca href=\"https://github.com/asweigart/readal\"\u003eAl Sweigart\u003c/a\u003e (@\u003ca href=\"https://github.com/asweigart\"\u003easweigart\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003cp\u003eVendoring \u003cem\u003eArgon2\u003c/em\u003e @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.15 wheels. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/112\"\u003e#112\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePyPy 3.11 wheels.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLinux on RISC-V 64bit wheels. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/106\"\u003e#106\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003epyemscripten\u003c/em\u003e wheels for Python 3.13 and 3.14. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/129\"\u003e#129\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe bindings are now built with \u003ca href=\"https://scikit-build-core.readthedocs.io/\"\u003e\u003cem\u003escikit-build-core\u003c/em\u003e\u003c/a\u003e and CMake instead of \u003cem\u003esetuptools\u003c/em\u003e. The C source for the extension module is generated from \u003ccode\u003e_ffi.cdef.txt\u003c/code\u003e and \u003ccode\u003e_ffi.csrc.c\u003c/code\u003e using CFFI's \u003ca href=\"https://cffi.readthedocs.io/en/stable/cffi-gen-src.html\"\u003e\u003ccode\u003ecffi-gen-src\u003c/code\u003e\u003c/a\u003e tool and committed to the repository as \u003ccode\u003e_ffi.c\u003c/code\u003e. The build compiles that file directly and needs no CFFI at build time. Building from source requires CMake now. If none is found, it is downloaded automatically as part of the build. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.9 support. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.13t wheels. Free-threading on 3.13 was always only experimental and both \u003ca href=\"https://redirect.github.com/pypa/manylinux/issues/1882\"\u003e\u003cem\u003emanylinux\u003c/em\u003e\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/cibuildwheel/pull/2684\"\u003e\u003cem\u003ecibuildwheel\u003c/em\u003e\u003c/a\u003e dropped support for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/blob/main/CHANGELOG.md\"\u003eargon2-cffi-bindings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/25.1.0...26.1.0\"\u003e26.1.0\u003c/a\u003e - 2026-08-20\u003c/h2\u003e\n\u003cp\u003eVendoring \u003cem\u003eArgon2\u003c/em\u003e @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.15 wheels.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/112\"\u003e#112\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePyPy 3.11 wheels.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLinux on RISC-V 64bit wheels.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/106\"\u003e#106\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cem\u003epyemscripten\u003c/em\u003e wheels for Python 3.13 and 3.14.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/129\"\u003e#129\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe bindings are now built with \u003ca href=\"https://scikit-build-core.readthedocs.io/\"\u003e\u003cem\u003escikit-build-core\u003c/em\u003e\u003c/a\u003e and CMake instead of \u003cem\u003esetuptools\u003c/em\u003e.\nThe C source for the extension module is generated from \u003ccode\u003e_ffi.cdef.txt\u003c/code\u003e and \u003ccode\u003e_ffi.csrc.c\u003c/code\u003e using CFFI's \u003ca href=\"https://cffi.readthedocs.io/en/stable/cffi-gen-src.html\"\u003e\u003ccode\u003ecffi-gen-src\u003c/code\u003e\u003c/a\u003e tool and committed to the repository as \u003ccode\u003e_ffi.c\u003c/code\u003e.\nThe build compiles that file directly and needs no CFFI at build time.\nBuilding from source requires CMake now.\nIf none is found, it is downloaded automatically as part of the build.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.9 support.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/173\"\u003e#173\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePython 3.13t wheels.\nFree-threading on 3.13 was always only experimental and both \u003ca href=\"https://redirect.github.com/pypa/manylinux/issues/1882\"\u003e\u003cem\u003emanylinux\u003c/em\u003e\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pypa/cibuildwheel/pull/2684\"\u003e\u003cem\u003ecibuildwheel\u003c/em\u003e\u003c/a\u003e dropped support for it.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/fb50afcbb80aee5e87d6f8b1d15e7238321387c9\"\u003e\u003ccode\u003efb50afc\u003c/code\u003e\u003c/a\u003e Prepare 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/2e198d004abaa947269de88c0c0aa58b3c13db3e\"\u003e\u003ccode\u003e2e198d0\u003c/code\u003e\u003c/a\u003e update dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/5ab01f959c759b2d8ba74fc7416f03085f449fab\"\u003e\u003ccode\u003e5ab01f9\u003c/code\u003e\u003c/a\u003e Switch from setuptools to scikit-build-core (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/04ace1a695f4a9df96283f84d697f3268bcbeb9d\"\u003e\u003ccode\u003e04ace1a\u003c/code\u003e\u003c/a\u003e update (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/58eb37ee267a87b97a7b3462ff9299e93d059025\"\u003e\u003ccode\u003e58eb37e\u003c/code\u003e\u003c/a\u003e Amend AI policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/c1d25ed1bb3646cdf7c7fec329f8337f8f82f6ce\"\u003e\u003ccode\u003ec1d25ed\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/e6c20e9aec09b0ca05c69034f83c9665ddec3ab2\"\u003e\u003ccode\u003ee6c20e9\u003c/code\u003e\u003c/a\u003e update dev (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/138\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/abcbd7b35b7d322ff9bc3226a60f3dae223f3e78\"\u003e\u003ccode\u003eabcbd7b\u003c/code\u003e\u003c/a\u003e Build Python 3.15 wheels (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/112\"\u003e#112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/af04999843b1e12dfbfa50254020c3fdd1c9c259\"\u003e\u003ccode\u003eaf04999\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/42976a3db475a24f7a62c89bead47a359d23cb4c\"\u003e\u003ccode\u003e42976a3\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python in the github-actions group (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/25.1.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.0\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003eissue 2266\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coverage.html#coverage.Coverage.switch_context\"\u003eCoverage.switch_context()\u003c/a\u003e method now returns the previous context.\u003c/li\u003e\n\u003cli\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003epull 2268\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixes to validation of options and configuration settings:\n\u003cul\u003e\n\u003cli\u003eNegative precision settings now always cause useful error messages (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003epull 2261\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn invalid regex in the \u003ccode\u003e--contexts\u003c/code\u003e option (or the \u003ccode\u003e[report] contexts\u003c/code\u003e setting) reported a confusing “Couldn’t use data file …: user-defined function raised exception” error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003epull 2262\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNon-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e entry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the \u003ccode\u003e[paths]\u003c/code\u003e section (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003epull 2263\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like \u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can’t reach the subprocesses. The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as the entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e slipped through and failed later with “Can’t combine statement coverage data with branch data”. Each named concurrency library is now properly considered (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2270\"\u003epull 2270\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any measured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on Windows. The original extension is now restored on the annotated copy (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003epull 2265\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.0\"\u003ecoverage 7.16.0\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.0\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the Total row in the footer of the HTML report's index page was\nrecomputed in JavaScript with rounding that could disagree with the total\nthe server rendered in the heading, including showing \u003ccode\u003e100%\u003c/code\u003e when coverage\nwas not complete.  The footer now clamps values the way the rest of the\nreport does, and when nothing is filtered out it is shown exactly as the\nserver rendered it, so the two can't disagree.  That also keeps rows the\nreport omits (\u003ccode\u003e--skip-covered\u003c/code\u003e drops fully covered files) in the total.\nFixes \u003ccode\u003eissue 2256\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _issue 2256: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2256\"\u003ecoveragepy/coveragepy#2256\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003cp\u003eVersion 7.16.0 — 2026-08-28\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.8.0 to 2.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.9.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a potential \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003eexcessive CPU consumption\u003c/a\u003e issue.   Thanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos, for discovering and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.11.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Nicki Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression chain length is limited to 16.  Prior to this change,\na maliciously crafted DNS message could cause\ndns.name.from_wire_parser() to use excessive CPU for DNS name\ndecompression. Applications which processed untrusted DNS wire form\nmessages with dnspython could be degraded or DoS'd by the extra CPU\nuse required.\u003c/p\u003e\n\u003cp\u003eThanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos\nfor finding and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003ehttps://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHttpx2 has replaced httpx for HTTPS TCP connections.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.11.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDNSSEC now supports ML-DSA-44, a post-quantum signature algorithm.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NSEC3 Next Hashed Owner Name in presentation format is now decoded as\nbase32hex (RFC 5155 Section 1.3, RFC 4648 Extended Hex Alphabet).  The letters\nW, X, Y, and Z are not in that alphabet; they used to be accepted and silently\ndecoded to a different owner name, so \u003ccode\u003eto_text\u003c/code\u003e of the result did not match\nthe input.  They are now rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NID and L64 node/locator ids in presentation format are now rejected when\na group contains anything other than hex digits. A sign or underscore, which\n\u003ccode\u003eint()\u003c/code\u003e silently accepts, produced a record whose text form did not parse\nback the same way (RFC 6742).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRdata of a known type in the generic \u003ccode\u003e\\#\u003c/code\u003e syntax, such as an NS record in a\nzone file, no longer fails to parse when it contains a name under the origin.\nIts names are relativized as in the type's own text form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe SVCB and HTTPS \u003ccode\u003eech\u003c/code\u003e parameter value must now be an ECHConfigList with a\ncorrect length prefix and at least 4 octets of content (RFC 9848, RFC 9849).\nThe individual ECHConfig structures are not checked.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS SvcParamKeys in presentation format, including those listed in\n\u003ccode\u003emandatory\u003c/code\u003e, must now be spelled as RFC 9460 requires: 1-63 lowercase\nletters, digits, or hyphens.  Uppercase keys such as \u003ccode\u003eALPN\u003c/code\u003e and keys with\nunderscores such as \u003ccode\u003eno_default_alpn\u003c/code\u003e are rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS presentation format parsing now follows the escaping rules of\nRFC 9460.  SvcParamKeys may not contain escapes (e.g. \u003ccode\u003e\\097lpn=h2\u003c/code\u003e), and in\ncomma-separated values (\u003ccode\u003ealpn\u003c/code\u003e, \u003ccode\u003edocpath\u003c/code\u003e) only \u003ccode\u003e\\,\u003c/code\u003e and \u003ccode\u003e\\\\\u003c/code\u003e are\nvalid escapes after character-string decoding (e.g. \u003ccode\u003ealpn=\u0026quot;h2\\\\x\u0026quot;\u003c/code\u003e is\nrejected).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/e790c8f20a67ad439c7aafef2321e161c6028eee\"\u003e\u003ccode\u003ee790c8f\u003c/code\u003e\u003c/a\u003e add missing test file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b72af6723fa0df2113522132363eeda99c9abaa6\"\u003e\u003ccode\u003eb72af67\u003c/code\u003e\u003c/a\u003e CI release branch update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bdd62fed595a80b65feac75d7c2e1e3b908c56e6\"\u003e\u003ccode\u003ebdd62fe\u003c/code\u003e\u003c/a\u003e release prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bafc96391dc352832fb17cc7939782735b642fb8\"\u003e\u003ccode\u003ebafc963\u003c/code\u003e\u003c/a\u003e Merge branch 'decompression-limit'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c5fecf515b4fa3a12e882bf80da232c94134cf50\"\u003e\u003ccode\u003ec5fecf5\u003c/code\u003e\u003c/a\u003e release tidying\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c7686f3ef513d0da121f57fe1899bf2a2997da35\"\u003e\u003ccode\u003ec7686f3\u003c/code\u003e\u003c/a\u003e update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/3c855c8d8f8269eb672aef3679cd2e33db924c03\"\u003e\u003ccode\u003e3c855c8\u003c/code\u003e\u003c/a\u003e more type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/52815c91bbd831f6cbe85ed7bba4d7b8e1c25400\"\u003e\u003ccode\u003e52815c9\u003c/code\u003e\u003c/a\u003e type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/f563427fecd9c0c4ba60cf002f2f33a5c396dd2a\"\u003e\u003ccode\u003ef563427\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b485e460c266540a1a09ca6d8d1d7b685b1d3023\"\u003e\u003ccode\u003eb485e46\u003c/code\u003e\u003c/a\u003e Limit decompression to a chain length of at most 16 pointers.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.8.0...v2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.2.5 to 3.5.6\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.6 (2026-09-14)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect a race condition that could lead to garbage collection\nunintentionally being disabled. See \u003ccode\u003ePR 529 \u0026lt;https://github.com/python-greenlet/greenlet/pull/529\u0026gt;\u003c/code\u003e_ by Yurii.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.5.5 (2026-08-10)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eLink the C++ runtime statically into the Windows wheels again, as the\nAppveyor builds did through 3.3.0. Since 3.3.1 \u003ccode\u003e_greenlet.pyd\u003c/code\u003e\nimported \u003ccode\u003eMSVCP140.dll\u003c/code\u003e, which no Windows CPython distribution ships,\nso importing greenlet failed on machines without the Visual C++\nredistributable. See \u003ccode\u003eissue 525 \u0026lt;https://github.com/python-greenlet/greenlet/issues/525\u0026gt;\u003c/code\u003e_. Issue\nand pull request by Daniel Sticker.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\nBinary 3.15 wheels are now built with 3.15.0rc1. This should be\ncompatible with future 3.15 releases and is believed compatible\nwith 3.15b4 as well (but not earlier versions).\u003c/p\u003e\n\u003ch1\u003e3.5.4 (2026-07-22)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix a crash (segfault) on free-threaded builds of Python 3.14 and\nlater when the garbage collector runs while a greenlet that was\nstarted from a non-empty C-stack-reference state is active.\nSee \u003ccode\u003eissue 515 \u0026lt;https://github.com/python-greenlet/greenlet/issues/515\u0026gt;\u003c/code\u003e_.\nThanks to ddorian and Kumar Aditya.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a potential use-after-free on free-threaded builds of Python 3.14\nand later when the garbage collector runs while a greenlet is\nsuspended holding a \u003ccode\u003e_PyCStackRef\u003c/code\u003e (for example, mid attribute\nresolution). See\n\u003ccode\u003eissue 515 \u0026lt;https://github.com/python-greenlet/greenlet/issues/515\u0026gt;\u003c/code\u003e_.\nThanks to ddorian and Kumar Aditya.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a deadlock on free-threaded builds when a greenlet switch happened\nwhile a \u003ccode\u003ePyCriticalSection\u003c/code\u003e was held -- for example inside asyncio's\n\u003ccode\u003eTask.__step\u003c/code\u003e, which holds one on the running task for the duration of\nthe step. See \u003ccode\u003ePR 519 \u0026lt;https://github.com/python-greenlet/greenlet/pull/519/\u0026gt;\u003c/code\u003e.\nThanks to ddorian and Kumar Aditya.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. note::\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/abfe740315a9926ff180c622cf02f122c07f9126\"\u003e\u003ccode\u003eabfe740\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e23e3e47df21bbc7a83219621ce4966d349f7d2b\"\u003e\u003ccode\u003ee23e3e4\u003c/code\u003e\u003c/a\u003e Change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/8de830f6df6fefd533fedbe4bb0a2028bcf77372\"\u003e\u003ccode\u003e8de830f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e from Georggi/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/72d7cacf4cf667f92786db306be095b6041bca5a\"\u003e\u003ccode\u003e72d7cac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/530\"\u003e#530\u003c/a\u003e from python-greenlet/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ac01b7d1a6b3a4d2477c17a1047af6d0056d69a7\"\u003e\u003ccode\u003eac01b7d\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e18f5a6d2696c031d34cf4933dcdd6a8e37f6f85\"\u003e\u003ccode\u003ee18f5a6\u003c/code\u003e\u003c/a\u003e Simplify GCDisabledGuard constructor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6aaf3af698aa7789075a904e5bbb70e24df06553\"\u003e\u003ccode\u003e6aaf3af\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ddb14535002029347139ce137c137a04eecf61c5\"\u003e\u003ccode\u003eddb1453\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/7de515cc948fcbca31abc672e0db9bf5d51460a5\"\u003e\u003ccode\u003e7de515c\u003c/code\u003e\u003c/a\u003e Update CHANGES: Credit for issue 525 and note about 3.15 binary wheels [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/f3746aa53b16a2a13e8894e3fd91a13c4578a428\"\u003e\u003ccode\u003ef3746aa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/526\"\u003e#526\u003c/a\u003e from stickerdaniel/windows-static-runtime\u003c/l...\n\n_Description has been truncated_","html_url":"https://github.com/garrib10/job-search-manager-api/pull/37","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/garrib10%2Fjob-search-manager-api/issues/37","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/37/packages"}},{"old_version":"0.47.0","new_version":"0.54.0","update_type":"minor","path":"/backend","pr_created_at":"2026-10-16T12:08:25.000Z","version_change":"0.47.0 → 0.54.0","issue":{"uuid":"5883884609","node_id":"PR_kwDOVMN_188AAAABI1sacg","number":8,"state":"open","title":"Bump uvicorn from 0.47.0 to 0.54.0 in /backend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-16T12:08:25.000Z","updated_at":"2026-10-16T12:08:28.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"uvicorn","old_version":"0.47.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.47.0 to 0.54.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.47.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uvicorn\u0026package-manager=pip\u0026previous-version=0.47.0\u0026new-version=0.54.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/jdermlife/MyForever/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdermlife%2FMyForever/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"0.30.6","new_version":"0.54.0","update_type":"minor","path":"/services/source-worker","pr_created_at":"2026-10-15T11:42:55.000Z","version_change":"0.30.6 → 0.54.0","issue":{"uuid":"5865447827","node_id":"PR_kwDOVJ8Ev88AAAABIm9TBA","number":24,"state":"closed","title":"build(deps): bump the python-minor-and-patch group in /services/source-worker with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-15T12:33:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-15T11:42:55.000Z","updated_at":"2026-10-15T12:33:11.000Z","time_to_close":3014,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-minor-and-patch","update_count":8,"packages":[{"name":"fastapi","old_version":"0.115.0","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.30.6","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"pydantic","old_version":"2.9.1","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"boto3","old_version":"1.35.10","new_version":"1.43.111","repository_url":"https://github.com/boto/boto3"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"instaloader","old_version":"4.13.1","new_version":"4.15.3","repository_url":"https://github.com/instaloader/instaloader"}],"path":"/services/source-worker","ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group in /services/source-worker with 8 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.115.0` | `0.143.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.54.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.9.1` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.15.0` |\n| [boto3](https://github.com/boto/boto3) | `1.35.10` | `1.43.111` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.32.0` |\n| [instaloader](https://github.com/instaloader/instaloader) | `4.13.1` | `4.15.3` |\n\nUpdates `fastapi` from 0.115.0 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.0...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.30.6 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.30.6...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.27.2 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.2...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.9.1 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.9.1...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.5.2 to 2.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.15.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003eBehavior changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ecase_sensitive\u003c/code\u003e now applies to init kwargs and config-file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/900\"\u003e#900\u003c/a\u003e). \u003ccode\u003eInitSettingsSource\u003c/code\u003e and the JSON/TOML/YAML config sources previously ignored \u003ccode\u003ecase_sensitive\u003c/code\u003e. Since it defaults to \u003ccode\u003eFalse\u003c/code\u003e, \u003cstrong\u003ecase-insensitive matching is now the default\u003c/strong\u003e for these sources — e.g. \u003ccode\u003eSettings(TeSt=...)\u003c/code\u003e now populates a \u003ccode\u003etest\u003c/code\u003e field where it previously did not. Nested keys are still matched case-sensitively.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFields with unresolved forward references now emit a warning\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/901\"\u003e#901\u003c/a\u003e). Settings sources can silently fail to resolve such fields; they now raise \u003ccode\u003eIncompleteFieldDefinitionWarning\u003c/code\u003e telling you to call \u003ccode\u003emodel_rebuild()\u003c/code\u003e. If you have \u003ccode\u003efilterwarnings = error\u003c/code\u003e configured, this may surface as a new failure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNon-JSON env values for strict fields now raise \u003ccode\u003eValidationError\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/926\"\u003e#926\u003c/a\u003e) instead of a less specific error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eShow environment variable names in CLI help\u003c/strong\u003e via \u003ccode\u003ecli_show_env_vars=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/860\"\u003e#860\u003c/a\u003e), so generated \u003ccode\u003e--help\u003c/code\u003e output doubles as configuration documentation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePYDANTIC_SETTINGS_DEBUG\u003c/code\u003e for debugging settings resolution\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/906\"\u003e#906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/913\"\u003e#913\u003c/a\u003e). Set it to a truthy value with \u003ccode\u003eDEBUG\u003c/code\u003e logging enabled to see each source's contribution in priority order, which source won for each value, and which \u003ccode\u003eenv_file\u003c/code\u003e/secret files were probed, loaded, or skipped — the long-standing \u0026quot;why isn't my \u003ccode\u003e.env\u003c/code\u003e being picked up?\u0026quot; question.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003etoml_table_header\u003c/code\u003e for regular TOML files\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/882\"\u003e#882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/886\"\u003e#886\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/887\"\u003e#887\u003c/a\u003e), letting you root settings at a nested table in any TOML file, not just \u003ccode\u003epyproject.toml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eTraversable\u003c/code\u003e support for JSON/TOML/YAML file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/902\"\u003e#902\u003c/a\u003e), so you can load config packaged inside a distribution — including files inside a zip or wheel — via \u003ccode\u003eimportlib.resources.files(...)\u003c/code\u003e without casting to \u003ccode\u003ePath\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGCP: \u003ccode\u003eproject_id\u003c/code\u003e can come from an earlier settings source\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003e#878\u003c/a\u003e), rather than only from the constructor or \u003ccode\u003eGOOGLE_CLOUD_PROJECT\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix env vars not loading on Windows with \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/894\"\u003e#894\u003c/a\u003e). Windows upper-cases \u003ccode\u003eos.environ\u003c/code\u003e keys, so fields raised \u003ccode\u003eField required\u003c/code\u003e instead of picking up their values.\u003c/li\u003e\n\u003cli\u003eRead secret files as UTF-8 instead of the platform locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/917\"\u003e#917\u003c/a\u003e). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAliasPath\u003c/code\u003e on nested model fields not JSON-decoding env values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/898\"\u003e#898\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix case-insensitive matching for \u003cstrong\u003eoptional\u003c/strong\u003e nested models (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/905\"\u003e#905\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix dotenv extras being wrongly claimed by a complex field sharing a name prefix (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/912\"\u003e#912\u003c/a\u003e) — e.g. \u003ccode\u003edbx_token\u003c/code\u003e being swallowed by a \u003ccode\u003edb: dict\u003c/code\u003e field.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003enested_model_default_partial_update=True\u003c/code\u003e corrupting discriminated unions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/876\"\u003e#876\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSecret\u003c/code\u003e subclasses crashing when loaded from the environment (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/920\"\u003e#920\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix enum names not parsing through nested annotations such as \u003ccode\u003eOptional[Annotated[MyEnum, ...]]\u003c/code\u003e with \u003ccode\u003eenv_parse_enums=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/910\"\u003e#910\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn empty \u003ccode\u003eyaml_config_section\u003c/code\u003e now falls back to defaults instead of raising \u003ccode\u003eAttributeError: 'NoneType' object has no attribute 'keys'\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/914\"\u003e#914\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e no longer follows symlinks pointing outside \u003ccode\u003esecrets_dir\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003e#889\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eGCP: skip the \u003ccode\u003elist_secrets\u003c/code\u003e call when \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003e#862\u003c/a\u003e), lowering the required IAM permissions to just \u003ccode\u003eroles/secretmanager.secretAccessor\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAWS: \u003ccode\u003etypes-boto3[secretsmanager]\u003c/code\u003e is no longer required at runtime (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/880\"\u003e#880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument JSON parsing of complex env values, plus a comma-separated-values recipe (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/919\"\u003e#919\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRecommend an async settings loading pattern (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/908\"\u003e#908\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify behavior when an unprefixed value is present in a dotenv file (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/895\"\u003e#895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify environment variable helper descriptions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003e#867\u003c/a\u003e) and fix assorted typos (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/904\"\u003e#904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate documentation link for Pydantic settings by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/863\"\u003epydantic/pydantic-settings#863\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/865\"\u003epydantic/pydantic-settings#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify environment variable helper descriptions by \u003ca href=\"https://github.com/vip892766gma\"\u003e\u003ccode\u003e@​vip892766gma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003epydantic/pydantic-settings#867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/870\"\u003epydantic/pydantic-settings#870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/875\"\u003epydantic/pydantic-settings#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip list_secrets call when case_sensitive=True by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003epydantic/pydantic-settings#862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGoogleSecretManagerSettingsSource: read project_id from previous sources by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003epydantic/pydantic-settings#878\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f725ca187bee4212e9ef799eefa3cb25be788462\"\u003e\u003ccode\u003ef725ca1\u003c/code\u003e\u003c/a\u003e Prepare release 2.15.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/930\"\u003e#930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/28f35c25fac5d61210d532c31a300d49c0b684a4\"\u003e\u003ccode\u003e28f35c2\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9056db049560897229f2603493753bae27b6479f\"\u003e\u003ccode\u003e9056db0\u003c/code\u003e\u003c/a\u003e test: move function-local imports to the top of test modules (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/927\"\u003e#927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f077e3ab3d9492838c7ef9275a88c95134688095\"\u003e\u003ccode\u003ef077e3a\u003c/code\u003e\u003c/a\u003e fix: raise ValidationError for non-JSON env values on strict fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/926\"\u003e#926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ae25d703c458b57f5a9a425f6ec9a28ad868f980\"\u003e\u003ccode\u003eae25d70\u003c/code\u003e\u003c/a\u003e fix: treat Secret subclasses as non-complex fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/716\"\u003e#716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/798dcea2a23b08a3e9b37994014e036224f6dd18\"\u003e\u003ccode\u003e798dcea\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/a190041d353bda2d432ea1908de4c499ae89ee0a\"\u003e\u003ccode\u003ea190041\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/925\"\u003e#925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/5d9333282b5c85d65a457c45e4476369b9949726\"\u003e\u003ccode\u003e5d93332\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/921\"\u003e#921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d2fdeda91157140d2ff0c05404f32a9b1218115a\"\u003e\u003ccode\u003ed2fdeda\u003c/code\u003e\u003c/a\u003e fix: read secret files as UTF-8 instead of the locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/917\"\u003e#917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/2256a4e60f83f2da81e7654252562fc4841aa5d4\"\u003e\u003ccode\u003e2256a4e\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/915\"\u003e#915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.5.2...v2.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.35.10 to 1.43.111\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c14ee96508bec2751d72e973bc067c9d7ab34793\"\u003e\u003ccode\u003ec14ee96\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.111'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2309640b015e63201c612ee3eeea175941703f98\"\u003e\u003ccode\u003e2309640\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.111\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1d6d2d9a8464e704b37da8f9b47f232eeab4a161\"\u003e\u003ccode\u003e1d6d2d9\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d948ed5c4b3ba0e93087113289f0aaaf70cd3c6c\"\u003e\u003ccode\u003ed948ed5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.110'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9b19947c3cfcef75509aa9cf9c95447d8d732282\"\u003e\u003ccode\u003e9b19947\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.110' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dedcde7ab830a2c18b22ede2cec687f8c83029a4\"\u003e\u003ccode\u003ededcde7\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.110\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e09fb1d72d443fc5a2350f468c9117d3c8d00280\"\u003e\u003ccode\u003ee09fb1d\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/76f85a723a20f562fc0d7eb1437d7b1865e01b7a\"\u003e\u003ccode\u003e76f85a7\u003c/code\u003e\u003c/a\u003e Bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4856\"\u003e#4856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8afafece9c81678879a0580e69a1b57325db7351\"\u003e\u003ccode\u003e8afafec\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.109'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1a2fc5c27d8830186f75423e25293dc5a97694bc\"\u003e\u003ccode\u003e1a2fc5c\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.109' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.35.10...1.43.111\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.30.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1367\"\u003e#1367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 1b118464 and 58c0c595)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 8d2a5aed)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake pool \u003ccode\u003emin_size\u003c/code\u003e a maintained connection floor and add \u003ccode\u003einit_size\u003c/code\u003e to\ncontrol the number of connections opened at startup (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e).\nIdle connections at or below \u003ccode\u003emin_size\u003c/code\u003e are retained, and closed connections\nare replaced in the background. \u003ccode\u003einit_size\u003c/code\u003e defaults to \u003ccode\u003emin_size\u003c/code\u003e.\nTo preserve the previous behavior, where the pool could drain to zero,\nreplace \u003ccode\u003emin_size=N\u003c/code\u003e with \u003ccode\u003einit_size=N, min_size=0\u003c/code\u003e.\n(by \u003ca href=\"https://github.com/shatilov-diman\"\u003e\u003ccode\u003e@​shatilov-diman\u003c/code\u003e\u003c/a\u003e in 67a1cbc5)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003ehashlib.pbkdf2_hmac()\u003c/code\u003e for faster SCRAM password derivation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1359\"\u003e#1359\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/twelfthlabor\"\u003e\u003ccode\u003e@​twelfthlabor\u003c/code\u003e\u003c/a\u003e in 00319a9b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse the statement cache for \u003ccode\u003ecopy_records_to_table()\u003c/code\u003e introspection (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1360\"\u003e#1360\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/matemax\"\u003e\u003ccode\u003e@​matemax\u003c/code\u003e\u003c/a\u003e in dd058652)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClean up connections rejected by \u003ccode\u003etarget_session_attrs\u003c/code\u003e immediately so an\nunresponsive rejected host cannot delay the selected connection, and cleanup\ntasks cannot outlive the event loop. Rejected connections are aborted without\nwaiting for a graceful disconnect; servers may log \u0026quot;unexpected EOF on client\nconnection\u0026quot; if the Terminate message is not delivered before the transport\ncloses.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a connection pool deadlock when releasing a connection after a protocol\nabort (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1324\"\u003e#1324\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/pchaseh\"\u003e\u003ccode\u003e@​pchaseh\u003c/code\u003e\u003c/a\u003e in 4a83cc2f)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHonor \u003ccode\u003eConnection.close(timeout=...)\u003c/code\u003e while waiting for a pending\ncancellation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1361\"\u003e#1361\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in c06bcb4d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent stuck cancellation from blocking connection teardown or pool release\nby bounding cancellation with the command or release timeout (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1370\"\u003e#1370\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 4cf02203)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePreserve the server error when the connection closes mid-operation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1369\"\u003e#1369\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/RitiGrover\"\u003e\u003ccode\u003e@​RitiGrover\u003c/code\u003e\u003c/a\u003e in 6c8f1a7a)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix COPY cleanup when a records generator raises, preserving the original\nexception and avoiding protocol desynchronization and stalled rollback (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1358\"\u003e#1358\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/CodingCossack\"\u003e\u003ccode\u003e@​CodingCossack\u003c/code\u003e\u003c/a\u003e in fdc6bc8f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/d701e11a392b0e3b93b7af4a05c1cdadddf75f8f\"\u003e\u003ccode\u003ed701e11\u003c/code\u003e\u003c/a\u003e asyncpg v0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b04f8f299dd05c380e3c14d32bd1c881063c2b58\"\u003e\u003ccode\u003eb04f8f2\u003c/code\u003e\u003c/a\u003e Bump to macOS 26 in runners, set deployment target to 11 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1384\"\u003e#1384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/3934d77bfb558527a3708be686b6e0e7f90ce2b3\"\u003e\u003ccode\u003e3934d77\u003c/code\u003e\u003c/a\u003e tests: Capture expected pool retry warnings during role changes (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1383\"\u003e#1383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/2c3750179e0289b2fd03dc2baa8e87f75afa174b\"\u003e\u003ccode\u003e2c37501\u003c/code\u003e\u003c/a\u003e tests: Avoid DeprecationWarning when settings up uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1382\"\u003e#1382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b7eea79c920832d353073951c28aca687d532b4a\"\u003e\u003ccode\u003eb7eea79\u003c/code\u003e\u003c/a\u003e Test pool min_size backoff on target attribute mismatch (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1381\"\u003e#1381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/46dda9139700dc18e63ae638021edfaddf0bf3a4\"\u003e\u003ccode\u003e46dda91\u003c/code\u003e\u003c/a\u003e Terminate rejected target_session_attrs candidates before returning (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1380\"\u003e#1380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/8d2a5aedbf36c6116212454ebeb8c242140f76e5\"\u003e\u003ccode\u003e8d2a5ae\u003c/code\u003e\u003c/a\u003e Support PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/58c0c595272cb91b81be82620c479ab5431b4d70\"\u003e\u003ccode\u003e58c0c59\u003c/code\u003e\u003c/a\u003e Bump uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/67a1cbc5eb4a6aa5df140b27f48488921521d6f7\"\u003e\u003ccode\u003e67a1cbc\u003c/code\u003e\u003c/a\u003e Make pool min_size a maintained connection floor (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/25aaaf5412cf868388d076f359d12feb2479a4bb\"\u003e\u003ccode\u003e25aaaf5\u003c/code\u003e\u003c/a\u003e fix: allow cursors in external transactions (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `instaloader` from 4.13.1 to 4.15.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/instaloader/instaloader/releases\"\u003einstaloader's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.15.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix profile resolution (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2701\"\u003e#2701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix post metadata fetching (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2706\"\u003e#2706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix caption mention being missed after a newline (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2712\"\u003e#2712\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/hyperplural\"\u003e\u003ccode\u003e@​hyperplural\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/mayman20\"\u003e\u003ccode\u003e@​mayman20\u003c/code\u003e\u003c/a\u003e for contributing to this release!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/socialapishub\"\u003e\u003ccode\u003e@​socialapishub\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/rocketapi-io\"\u003e\u003ccode\u003e@​rocketapi-io\u003c/code\u003e\u003c/a\u003e and all other sponsors for supporting this release!\u003c/p\u003e\n\u003cp\u003eIf you are also interested in supporting the development of Instaloader, see \u003ca href=\"https://instaloader.github.io/sponsors.html\"\u003ehttps://instaloader.github.io/sponsors.html\u003c/a\u003e for a number of options.\u003c/p\u003e\n\u003ch2\u003eVersion 4.15.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix profile metadata GraphQL query flags (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2696\"\u003e#2696\u003c/a\u003e \u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2695\"\u003e#2695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGuard against null data in \u003ccode\u003ePost._obtain_metadata\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2705\"\u003e#2705\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2704\"\u003e#2704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor typing fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/mholzinger\"\u003e\u003ccode\u003e@​mholzinger\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/npiriou\"\u003e\u003ccode\u003e@​npiriou\u003c/code\u003e\u003c/a\u003e for contributing to this release!\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/socialapishub\"\u003e\u003ccode\u003e@​socialapishub\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/rocketapi-io\"\u003e\u003ccode\u003e@​rocketapi-io\u003c/code\u003e\u003c/a\u003e and all other sponsors for supporting this release!\u003c/p\u003e\n\u003cp\u003eIf you are also interested in supporting the development of Instaloader, see \u003ca href=\"https://instaloader.github.io/sponsors.html\"\u003ehttps://instaloader.github.io/sponsors.html\u003c/a\u003e for a number of options.\u003c/p\u003e\n\u003ch2\u003eVersion 4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix obtaining Profiles (when logged in) by migrating to new GraphQL endpoints (\u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2651\"\u003e#2651\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/instaloader/instaloader/issues/2652\"\u003e#2652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSave resume information on exception (\u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/Mahdi-Soleimani/content-repurposing/pull/24","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahdi-Soleimani%2Fcontent-repurposing/issues/24","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/24/packages"}},{"old_version":"0.53.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-15T05:52:54.000Z","version_change":"0.53.0 → 0.54.0","issue":{"uuid":"5860921878","node_id":"PR_kwDOJKSTjM8AAAABIjVT5g","number":15528,"state":"open","title":"chore(backend/deps): bump the production-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["size/xl","dependencies","platform/backend","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-15T05:52:54.000Z","updated_at":"2026-10-15T05:58:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(backend/deps): bump","group_name":"production-dependencies","update_count":27,"packages":[{"name":"fastapi","old_version":"0.128.8","new_version":"0.142.4","repository_url":"https://github.com/fastapi/fastapi"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"google-cloud-storage","old_version":"3.14.1","new_version":"3.17.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"launchdarkly-server-sdk","old_version":"9.17.0","new_version":"9.18.1","repository_url":"https://github.com/launchdarkly/python-server-sdk"},{"name":"ollama","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/ollama/ollama-python"},{"name":"orjson","old_version":"3.12.0","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pywebpush","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/web-push-libs/pywebpush"},{"name":"python-dotenv","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2026.9.10","new_version":"2026.9.29","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentry-sdk","old_version":"2.69.1","new_version":"2.71.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"slack-sdk","old_version":"3.44.1","new_version":"3.45.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"sqlalchemy","old_version":"2.0.52","new_version":"2.0.54","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"typesafe-sdk","old_version":"0.6.0","new_version":"0.7.4","repository_url":"https://github.com/typesafe-ai/typesafe-sdk-python"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"aioclamd","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/hbldh/aioclamd"},{"name":"gcloud-aio-storage","old_version":"9.6.4","new_version":"9.6.5","repository_url":"https://github.com/talkiq/gcloud-aio"},{"name":"firecrawl-py","old_version":"4.42.0","new_version":"4.50.0","repository_url":"https://github.com/firecrawl/firecrawl"},{"name":"exa-py","old_version":"2.21.0","new_version":"2.25.0"},{"name":"posthog","old_version":"7.53.0","new_version":"7.67.0","repository_url":"https://github.com/posthog/posthog-python"},{"name":"fpdf2","old_version":"2.8.8","new_version":"2.8.9","repository_url":"https://github.com/py-pdf/fpdf2"},{"name":"langsmith","old_version":"0.12.4","new_version":"0.14.7","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"pymssql","old_version":"2.4.1","new_version":"2.4.4","repository_url":"https://github.com/pymssql/pymssql"},{"name":"pymysql","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/PyMySQL/PyMySQL"},{"name":"pypdfium2","old_version":"5.13.0","new_version":"5.14.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"tavily-python","old_version":"0.8.2","new_version":"0.8.5","repository_url":"https://github.com/tavily-ai/tavily-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production-dependencies group with 27 updates in the /autogpt_platform/backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.8` | `0.142.4` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [google-cloud-storage](https://github.com/googleapis/google-cloud-python) | `3.14.1` | `3.17.0` |\n| [launchdarkly-server-sdk](https://github.com/launchdarkly/python-server-sdk) | `9.17.0` | `9.18.1` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.2` | `0.6.3` |\n| [orjson](https://github.com/ijl/orjson) | `3.12.0` | `3.13.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [pywebpush](https://github.com/web-push-libs/pywebpush) | `2.3.0` | `2.5.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3` | `1.2.4` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.9.10` | `2026.9.29` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.69.1` | `2.71.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.44.1` | `3.45.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.52` | `2.0.54` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [typesafe-sdk](https://github.com/typesafe-ai/typesafe-sdk-python) | `0.6.0` | `0.7.4` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [aioclamd](https://github.com/hbldh/aioclamd) | `1.0.0` | `1.1.0` |\n| [gcloud-aio-storage](https://github.com/talkiq/gcloud-aio) | `9.6.4` | `9.6.5` |\n| [firecrawl-py](https://github.com/firecrawl/firecrawl) | `4.42.0` | `4.50.0` |\n| exa-py | `2.21.0` | `2.25.0` |\n| [posthog](https://github.com/posthog/posthog-python) | `7.53.0` | `7.67.0` |\n| [fpdf2](https://github.com/py-pdf/fpdf2) | `2.8.8` | `2.8.9` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.12.4` | `0.14.7` |\n| [pymssql](https://github.com/pymssql/pymssql) | `2.4.1` | `2.4.4` |\n| [pymysql](https://github.com/PyMySQL/PyMySQL) | `1.2.0` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.13.0` | `5.14.0` |\n| [tavily-python](https://github.com/tavily-ai/tavily-python) | `0.8.2` | `0.8.5` |\n\n\nUpdates `fastapi` from 0.128.8 to 0.142.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16443\"\u003e#16443\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Sponsors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16437\"\u003e#16437\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16442\"\u003e#16442\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump urllib3 from 2.7.0 to 2.8.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16445\"\u003e#16445\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16438\"\u003e#16438\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e74b6e09106682de99e81e332deafb2995afa27b\"\u003e\u003ccode\u003ee74b6e0\u003c/code\u003e\u003c/a\u003e 👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16463\"\u003e#16463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6e659e84de09ee06e0499141f7f4951f478ddbac\"\u003e\u003ccode\u003e6e659e8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/923a78f6ab05cac8b5f2f9fcd484de7fae292592\"\u003e\u003ccode\u003e923a78f\u003c/code\u003e\u003c/a\u003e 📝 Remove HTML title from newsletter to avoid the tooltip (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16461\"\u003e#16461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.8...0.142.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-storage` from 3.14.1 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-storage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-storage: v3.17.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.16.0...google-cloud-storage-v3.17.0\"\u003e3.17.0\u003c/a\u003e (2026-10-08)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorage:\u003c/strong\u003e add OpenTelemetry metrics gating and configuration module (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18407\"\u003e#18407\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/654e7682083e920ab28db8d65f4e896decaf8a69\"\u003e654e768\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-cloud-storage: v3.16.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.15.1...google-cloud-storage-v3.16.0\"\u003e3.16.0\u003c/a\u003e (2026-10-01)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edeclare Python3.15 support (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8775794508e17150023c8e7152543410014458bf\"\u003e8775794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/372010680886d73acbafa4c6320a2fe4bb42a0e7\"\u003e\u003ccode\u003e3720106\u003c/code\u003e\u003c/a\u003e chore: release main (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18572\"\u003e#18572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/654e7682083e920ab28db8d65f4e896decaf8a69\"\u003e\u003ccode\u003e654e768\u003c/code\u003e\u003c/a\u003e feat(storage): add OpenTelemetry metrics gating and configuration module (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18\"\u003e#18\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/181e26a2475a028b2781caa75c10af0a99256431\"\u003e\u003ccode\u003e181e26a\u003c/code\u003e\u003c/a\u003e perf(spanner): eliminate redundant tracing span in run_in_transaction (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18357\"\u003e#18357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d28458cc2de86fd39c6c70b75e877ce72aa37bcf\"\u003e\u003ccode\u003ed28458c\u003c/code\u003e\u003c/a\u003e feat(google-devicesandservices-health): add v4beta (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18597\"\u003e#18597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/fd5a20e1efacbeb324337311b17481164781a267\"\u003e\u003ccode\u003efd5a20e\u003c/code\u003e\u003c/a\u003e chore(auth): remove rsa from optional dependencies (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18586\"\u003e#18586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/947949ba602195eaf93aa55e26cb33b95e1461f4\"\u003e\u003ccode\u003e947949b\u003c/code\u003e\u003c/a\u003e fix(firestore): add generic typing for DocumentSnapshot (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18587\"\u003e#18587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/b9ea66a5a2848c4c2287a1f78750b5124a27a336\"\u003e\u003ccode\u003eb9ea66a\u003c/code\u003e\u003c/a\u003e chore(firestore): correct samples link in README (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18473\"\u003e#18473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7d18b2575c5170518df0ba0e425d87a41f0eba56\"\u003e\u003ccode\u003e7d18b25\u003c/code\u003e\u003c/a\u003e feat(observability): implement universal 4-path OpenTelemetry tracing (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18433\"\u003e#18433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d0505e8bc7615f2c649d3e25ebc7e3ccca45f22b\"\u003e\u003ccode\u003ed0505e8\u003c/code\u003e\u003c/a\u003e feat: update API sources and regenerate (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18593\"\u003e#18593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/037036717747eb3f16e8b13a71c4c5e77824ba62\"\u003e\u003ccode\u003e0370367\u003c/code\u003e\u003c/a\u003e chore(main): release google-auth 2.61.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/18595\"\u003e#18595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-storage-v3.14.1...google-cloud-storage-v3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `launchdarkly-server-sdk` from 9.17.0 to 9.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/launchdarkly/python-server-sdk/releases\"\u003elaunchdarkly-server-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.18.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.18.0...9.18.1\"\u003e9.18.1\u003c/a\u003e (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReuse an in-flight big segment status poll instead of always querying twice (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/66013b520f448cf6cda3d6377cde93d8bb31b19c\"\u003e66013b5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis PR was generated with \u003ca href=\"https://github.com/googleapis/release-please\"\u003eRelease Please\u003c/a\u003e. See \u003ca href=\"https://github.com/googleapis/release-please#release-please\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev9.18.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.17.0...9.18.0\"\u003e9.18.0\u003c/a\u003e (2026-09-25)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd retry state for RETRY-spec backoff (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/522\"\u003e#522\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e734558d52dbd3eeeb9d378f283dd3d3f5cee611\"\u003ee734558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrive repeating tasks from a delay source (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry indefinitely after a data source failure instead of stopping permanently in FDv1 (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ewarn that payload filtering has no effect with FDv2 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/518\"\u003e#518\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/296311f9ea73f09e96bd8dfb7410405e08794776\"\u003e296311f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn when the SDK is used in a forked process without postfork (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/75402e90f38a154466ab8b2bdd53a819720e0001\"\u003e75402e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd async modules to the readthedocs API reference (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/513\"\u003e#513\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/f40d3b22c808e829e9deb4ac5feab05db85674e8\"\u003ef40d3b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLog the cached-data evaluation warning only once per client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/520\"\u003e#520\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/59ce998668b6907fb0663699127b0b9895cbdcef\"\u003e59ce998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead all items when a collection is empty (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/108714738b1ef0b955321b502bfa65dbced5eaee\"\u003e1087147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRepeating task wait duration is no longer reduced by a slow callback duration. (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport a distinct User-Agent for the async client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/516\"\u003e#516\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/514c46780cf5aa593c1f791bd1335c7048f6d235\"\u003e514c467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn and use the documented default for an invalid poll interval or initial reconnect delay (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis PR was generated with \u003ca href=\"https://github.com/googleapis/release-please\"\u003eRelease Please\u003c/a\u003e. See \u003ca href=\"https://github.com/googleapis/release-please#release-please\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/launchdarkly/python-server-sdk/blob/main/CHANGELOG.md\"\u003elaunchdarkly-server-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.18.0...9.18.1\"\u003e9.18.1\u003c/a\u003e (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReuse an in-flight big segment status poll instead of always querying twice (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/66013b520f448cf6cda3d6377cde93d8bb31b19c\"\u003e66013b5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.17.0...9.18.0\"\u003e9.18.0\u003c/a\u003e (2026-09-25)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd retry state for RETRY-spec backoff (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/522\"\u003e#522\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e734558d52dbd3eeeb9d378f283dd3d3f5cee611\"\u003ee734558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrive repeating tasks from a delay source (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry indefinitely after a data source failure instead of stopping permanently in FDv1 (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn that payload filtering has no effect with FDv2 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/518\"\u003e#518\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/296311f9ea73f09e96bd8dfb7410405e08794776\"\u003e296311f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn when the SDK is used in a forked process without postfork (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/75402e90f38a154466ab8b2bdd53a819720e0001\"\u003e75402e9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd async modules to the readthedocs API reference (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/513\"\u003e#513\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/f40d3b22c808e829e9deb4ac5feab05db85674e8\"\u003ef40d3b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLog the cached-data evaluation warning only once per client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/520\"\u003e#520\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/59ce998668b6907fb0663699127b0b9895cbdcef\"\u003e59ce998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead all items when a collection is empty (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/108714738b1ef0b955321b502bfa65dbced5eaee\"\u003e1087147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRepeating task wait duration is no longer reduced by a slow callback duration. (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e9abe8cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport a distinct User-Agent for the async client (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/516\"\u003e#516\u003c/a\u003e) (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/514c46780cf5aa593c1f791bd1335c7048f6d235\"\u003e514c467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWarn and use the documented default for an invalid poll interval or initial reconnect delay (\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003ee17e173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/ce2a9010a39488d6c2a88bccb103fd6e3df26ba8\"\u003e\u003ccode\u003ece2a901\u003c/code\u003e\u003c/a\u003e chore(main): release 9.18.1 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/66013b520f448cf6cda3d6377cde93d8bb31b19c\"\u003e\u003ccode\u003e66013b5\u003c/code\u003e\u003c/a\u003e fix: Reuse an in-flight big segment status poll instead of always querying tw...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/4d75813d80921b3dcdb6e2afe7b057e3658f5a60\"\u003e\u003ccode\u003e4d75813\u003c/code\u003e\u003c/a\u003e chore: Assert readiness directly instead of waiting on a timeout (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/6daade3c22d9a7358bde8d59f4a0a1acc758ca32\"\u003e\u003ccode\u003e6daade3\u003c/code\u003e\u003c/a\u003e chore(main): release 9.18.0 (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e17e1730de44f4494befd4df260381f7548ca74a\"\u003e\u003ccode\u003ee17e173\u003c/code\u003e\u003c/a\u003e feat: Retry indefinitely after a data source failure instead of stopping perm...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/108714738b1ef0b955321b502bfa65dbced5eaee\"\u003e\u003ccode\u003e1087147\u003c/code\u003e\u003c/a\u003e fix: Read all items when a collection is empty (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/5d1213ee6e89c9099b42397814daad5984bcfc48\"\u003e\u003ccode\u003e5d1213e\u003c/code\u003e\u003c/a\u003e chore: Restrict the sdist to an allowlist and verify it in CI (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/75402e90f38a154466ab8b2bdd53a819720e0001\"\u003e\u003ccode\u003e75402e9\u003c/code\u003e\u003c/a\u003e feat: Warn when the SDK is used in a forked process without postfork (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/512\"\u003e#512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/e734558d52dbd3eeeb9d378f283dd3d3f5cee611\"\u003e\u003ccode\u003ee734558\u003c/code\u003e\u003c/a\u003e feat: Add retry state for RETRY-spec backoff (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/launchdarkly/python-server-sdk/commit/9abe8cbb878445b500211c89f0e3176fdbe4587a\"\u003e\u003ccode\u003e9abe8cb\u003c/code\u003e\u003c/a\u003e fix: Drive repeating tasks from a delay source (\u003ca href=\"https://redirect.github.com/launchdarkly/python-server-sdk/issues/521\"\u003e#521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/launchdarkly/python-server-sdk/compare/9.17.0...9.18.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ollama` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ollama/ollama-python/releases\"\u003eollama's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eclient: widen sync generate think type to accept string levels by \u003ca href=\"https://github.com/anxkhn\"\u003e\u003ccode\u003e@​anxkhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/697\"\u003eollama/ollama-python#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle multiple tool calls in tools examples by \u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/634\"\u003eollama/ollama-python#634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etypes: make Image path extension check case-insensitive by \u003ca href=\"https://github.com/anxkhn\"\u003e\u003ccode\u003e@​anxkhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/696\"\u003eollama/ollama-python#696\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereadme: update to use gemma 4 and format by \u003ca href=\"https://github.com/ParthSareen\"\u003e\u003ccode\u003e@​ParthSareen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/740\"\u003eollama/ollama-python#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add System One API support by \u003ca href=\"https://github.com/ParthSareen\"\u003e\u003ccode\u003e@​ParthSareen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/749\"\u003eollama/ollama-python#749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCreate pylint.yml by \u003ca href=\"https://github.com/eoinmcgee1993\"\u003e\u003ccode\u003e@​eoinmcgee1993\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/731\"\u003eollama/ollama-python#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etypes/client: relax think type to support model-defined thinking levels by \u003ca href=\"https://github.com/arrase\"\u003e\u003ccode\u003e@​arrase\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/744\"\u003eollama/ollama-python#744\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anxkhn\"\u003e\u003ccode\u003e@​anxkhn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/697\"\u003eollama/ollama-python#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/634\"\u003eollama/ollama-python#634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eoinmcgee1993\"\u003e\u003ccode\u003e@​eoinmcgee1993\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/731\"\u003eollama/ollama-python#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrase\"\u003e\u003ccode\u003e@​arrase\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ollama/ollama-python/pull/744\"\u003eollama/ollama-python#744\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ollama/ollama-python/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/ollama/ollama-python/compare/v0.6.2...v0.6.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/8785556559ec1d045d27a1ba9d9cc7330c3d3cb1\"\u003e\u003ccode\u003e8785556\u003c/code\u003e\u003c/a\u003e types/client: relax think type to support model-defined thinking levels (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/744\"\u003e#744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/ed18cea18d6b569e09b26ed8495ce88530dae4b9\"\u003e\u003ccode\u003eed18cea\u003c/code\u003e\u003c/a\u003e feat: add System One API support (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/749\"\u003e#749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/b28b1e8a8cf5436d06805e5bb211904e9ff53ef9\"\u003e\u003ccode\u003eb28b1e8\u003c/code\u003e\u003c/a\u003e readme: update to use gemma 4 and format (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/740\"\u003e#740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/fa8509936be08809bd15ca90a371165eb9abeb50\"\u003e\u003ccode\u003efa85099\u003c/code\u003e\u003c/a\u003e types: make Image path extension check case-insensitive (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/696\"\u003e#696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/25b93290d8cd07b0d00732641f812ee34fd4c989\"\u003e\u003ccode\u003e25b9329\u003c/code\u003e\u003c/a\u003e fix: handle multiple tool calls in tools examples (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/634\"\u003e#634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollama/ollama-python/commit/3c5a26a0c5ca926db206aeff3c55d02162fb8d46\"\u003e\u003ccode\u003e3c5a26a\u003c/code\u003e\u003c/a\u003e client: widen sync generate think type to accept string levels (\u003ca href=\"https://redirect.github.com/ollama/ollama-python/issues/697\"\u003e#697\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ollama/ollama-python/compare/v0.6.2...v0.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.12.0 to 3.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0 - 2026-08-17\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/bd00937c5c46ab20eb5d7fe1cfc034b906c4578f\"\u003e\u003ccode\u003ebd00937\u003c/code\u003e\u003c/a\u003e 3.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/de1fd5a0bf3497c22267fe21ce9038fee4d9dacc\"\u003e\u003ccode\u003ede1fd5a\u003c/code\u003e\u003c/a\u003e frozendict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/f110dbe19873fe532b9dffa6c022d2769ed95479\"\u003e\u003ccode\u003ef110dbe\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ijl/orjson/compare/3.12.0...3.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pywebpush` from 2.3.0 to 2.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/web-push-libs/pywebpush/blob/main/CHANGELOG.md\"\u003epywebpush's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.5.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd common \u003ccode\u003estatus_code\u003c/code\u003e and \u003ccode\u003eretry_after\u003c/code\u003e accessors to \u003ccode\u003eWebPushException\u003c/code\u003e\nfor synchronous and asynchronous responses.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/web-push-libs/pywebpush/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.3 to 1.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edotenv get\u003c/code\u003e no longer exits with code 1 for empty string values (\u003ccode\u003eKEY=\u003c/code\u003e) by [\u003ca href=\"https://github.com/ShamikOfficial\"\u003e\u003ccode\u003e@​ShamikOfficial\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAn unquoted empty value followed by an inline comment (e.g. \u003ccode\u003eKEY= # comment\u003c/code\u003e) is now parsed as an empty string instead of the comment text by [\u003ca href=\"https://github.com/Noethix55555\"\u003e\u003ccode\u003e@​Noethix55555\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run --no-override\u003c/code\u003e now expands variable references with the same precedence as \u003ccode\u003eload_dotenv(override=False)\u003c/code\u003e, so a value like \u003ccode\u003e${BASE}/suffix\u003c/code\u003e uses the existing \u003ccode\u003eBASE\u003c/code\u003e from the environment instead of the one from the \u003ccode\u003e.env\u003c/code\u003e file by [\u003ca href=\"https://github.com/ROTl24\"\u003e\u003ccode\u003e@​ROTl24\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.4] - 2026-10-01\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edotenv get\u003c/code\u003e no longer exits with code 1 for empty string values (\u003ccode\u003eKEY=\u003c/code\u003e) by [\u003ca href=\"https://github.com/ShamikOfficial\"\u003e\u003ccode\u003e@​ShamikOfficial\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAn unquoted empty value followed by an inline comment (e.g. \u003ccode\u003eKEY= # comment\u003c/code\u003e) is now parsed as an empty string instead of the comment text by [\u003ca href=\"https://github.com/Noethix55555\"\u003e\u003ccode\u003e@​Noethix55555\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run --no-override\u003c/code\u003e now expands variable references with the same precedence as \u003ccode\u003eload_dotenv(override=False)\u003c/code\u003e, so a value like \u003ccode\u003e${BASE}/suffix\u003c/code\u003e uses the existing \u003ccode\u003eBASE\u003c/code\u003e from the environment instead of the one from the \u003ccode\u003e.env\u003c/code\u003e file by [\u003ca href=\"https://github.com/ROTl24\"\u003e\u003ccode\u003e@​ROTl24\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/a565c2cc41599c48eabc6b7b7f5b826d43c5a6d7\"\u003e\u003ccode\u003ea565c2c\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.3 → 1.2.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a7abd00261e51baba958e15f443c66165042ea2\"\u003e\u003ccode\u003e4a7abd0\u003c/code\u003e\u003c/a\u003e docs: add 1.2.4 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f215c0274dc4c310e5ca5feb4c6bddade25ece21\"\u003e\u003ccode\u003ef215c02\u003c/code\u003e\u003c/a\u003e fix: dotenv get exits 0 for empty string values (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/700\"\u003e#700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/58f2d7c112235b347040bb5cb579d4ebc0a0ad91\"\u003e\u003ccode\u003e58f2d7c\u003c/code\u003e\u003c/a\u003e test: make test_run_with_command_flags portable and meaningful (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/709\"\u003e#709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e0310e5bb3f2b701b11bbc007ca0c82c1bd56f38\"\u003e\u003ccode\u003ee0310e5\u003c/code\u003e\u003c/a\u003e fix: honor --no-override when expanding variables in dotenv run (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/698\"\u003e#698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/a00cb2eed0704cd6d2071b2004c37e95ccc86ee5\"\u003e\u003ccode\u003ea00cb2e\u003c/code\u003e\u003c/a\u003e docs: add CHANGELOG entry for \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/663\"\u003e#663\u003c/a\u003e (fix \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/600\"\u003e#600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f5485a61eefa5e686d6d5bdc7aa9ad6b104b1e92\"\u003e\u003ccode\u003ef5485a6\u003c/code\u003e\u003c/a\u003e fix: parse empty unquoted value with inline comment as empty string\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.3...v1.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.9.10 to 2026.9.29\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.9.29\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eUpdated to Unicode 18.0.0.\n\u003cp\u003eSwitched to using stdbool.h and stdint.h.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.9.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 619: `Match.expand()` segfaults after `detach_string()` when the template references a group\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.9\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#615](https://github.com/mrabarnett/mrab-regex/issues/615): Fix Python API error propagation in match helpers\n\u003cp\u003ePR \u003ca href=\"https://redirect.github.com/mrabarnett/mrab-regex/issues/616\"\u003e#616\u003c/a\u003e: Preserve Python Exceptions in Input Decoding and String Detachment\u003c/p\u003e\n\u003cp\u003ePR \u003ca href=\"https://redirect.github.com/mrabarnett/mrab-regex/issues/617\"\u003e#617\u003c/a\u003e: Prevent Invalid Pointer Use and Exception State Corruption in Byte String Joining\u003c/p\u003e\n\u003cp\u003ePR \u003ca href=\"https://redirect.github.com/mrabarnett/mrab-regex/issues/618\"\u003e#618\u003c/a\u003e: Propagate Allocation and Internal Errors During Pattern Compilation and Scanner Execution\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.9.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNew version of cibuildwheel no longer supports building for free-threaded Python 3.13.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.2\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eNew version of cibuildwheel no longer needs nor supports cpython-freethreading option.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.9.1\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eUpdated cibuildwheel.\nSupport Python 3.15.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.8.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.8.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 611: Heap out-of-bounds write at compile time\nGit issue 612: count_one() size underflow through the stale required-string cache\nGit issue 613: (*SKIP) inside an atomic group, plus an equality-only scan stop\nGit issue 614: build_GROUP() does not propagate the match direction\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.8.12\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/0e8cb0596ba6572c66e5d153a1d7c901b381e15e\"\u003e\u003ccode\u003e0e8cb05\u003c/code\u003e\u003c/a\u003e Updated to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/85e568c0e0be620b4ebe50c98ea92415f5995ffc\"\u003e\u003ccode\u003e85e568c\u003c/code\u003e\u003c/a\u003e Git issue 619: \u003ccode\u003eMatch.expand()\u003c/code\u003e segfaults after \u003ccode\u003edetach_string()\u003c/code\u003e when the te...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.9.10...2026.9.29\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.69.1 to 2.71.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.71.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eNew integration:\u003c/strong\u003e TypeSafe (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/4733\"\u003e#4733\u003c/a\u003e) by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAdd the TypeSafe integration to your \u003ccode\u003esentry_sdk.init\u003c/code\u003e call:\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.typesafe import TypeSafeIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn=\u0026quot;...\u0026quot;,\u003cbr /\u003e\ntraces_sample_rate=1.0,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nTypeSafeIntegration(),\u003cbr /\u003e\n]\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch4\u003eTypesafe\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.output.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7720\"\u003e#7720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet token usage attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7719\"\u003e#7719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.input.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7718\"\u003e#7718\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.response.model\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7717\"\u003e#7717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd integration with \u003ccode\u003esystem_one()\u003c/code\u003e patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7716\"\u003e#7716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep event if processor raises by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7701\"\u003e#7701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIsolate user callbacks, emit client reports by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7692\"\u003e#7692\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003edata_collection\u003c/code\u003e in changelog by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7565\"\u003e#7565\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(aws-lambda) Add \u003ccode\u003e.gitignore\u003c/code\u003e to lambda handlers by \u003ca href=\"https://github.com/pabloDeputter\"\u003e\u003ccode\u003e@​pabloDeputter\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7638\"\u003e#7638\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Set \u003ccode\u003eLITELLM_LOCAL_MODEL_COST_MAP=true\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7630\"\u003e#7630\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Adjust to \u003ccode\u003eOTLPSpanExporter._headers\u003c/code\u003e removal by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7722\"\u003e#7722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse top-level flush API in tests by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7725\"\u003e#7725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnsample on sampler exception by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7723\"\u003e#7723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003esentry_init\u003c/code\u003e fixture by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7577\"\u003e#7577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.70.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew integration:\u003c/strong\u003e Mistral AI (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/4733\"\u003e#4733\u003c/a\u003e) by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.71.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eNew integration:\u003c/strong\u003e TypeSafe (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/4733\"\u003e#4733\u003c/a\u003e) by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAdd the TypeSafe integration to your \u003ccode\u003esentry_sdk.init\u003c/code\u003e call:\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.typesafe import TypeSafeIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn=\u0026quot;...\u0026quot;,\u003cbr /\u003e\ntraces_sample_rate=1.0,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nTypeSafeIntegration(),\u003cbr /\u003e\n]\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch4\u003eTypesafe\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.output.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7720\"\u003e#7720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet token usage attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7719\"\u003e#7719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.input.messages\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7718\"\u003e#7718\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRecord \u003ccode\u003egen_ai.response.model\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7717\"\u003e#7717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd integration with \u003ccode\u003esystem_one()\u003c/code\u003e patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7716\"\u003e#7716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep event if processor raises by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7701\"\u003e#7701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIsolate user callbacks, emit client reports by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7692\"\u003e#7692\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003edata_collection\u003c/code\u003e in changelog by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7565\"\u003e#7565\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(aws-lambda) Add \u003ccode\u003e.gitignore\u003c/code\u003e to lambda handlers by \u003ca href=\"https://github.com/pabloDeputter\"\u003e\u003ccode\u003e@​pabloDeputter\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7638\"\u003e#7638\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Set \u003ccode\u003eLITELLM_LOCAL_MODEL_COST_MAP=true\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7630\"\u003e#7630\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Adjust to \u003ccode\u003eOTLPSpanExporter._headers\u003c/code\u003e removal by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/...\n\n_Description has been truncated_","html_url":"https://github.com/Significant-Gravitas/AutoGPT/pull/15528","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Significant-Gravitas%2FAutoGPT/issues/15528","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15528/packages"}},{"old_version":"0.24.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-14T22:27:58.000Z","version_change":"0.24.0 → 0.54.0","issue":{"uuid":"5856735163","node_id":"PR_kwDORmZyN88AAAABIgCq6g","number":21,"state":"closed","title":"chore(deps): bump the python-minor group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-17T20:24:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T22:27:58.000Z","updated_at":"2026-10-17T20:24:11.000Z","time_to_close":251771,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor","update_count":4,"packages":[{"name":"uvicorn","old_version":"0.24.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.14.0","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"orjson","old_version":"3.11.6","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"sgp4","old_version":"2.25","new_version":"2.27","repository_url":"https://github.com/brandon-rhodes/python-sgp4"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor group with 4 updates in the /backend directory: [uvicorn](https://github.com/Kludex/uvicorn), [pydantic](https://github.com/pydantic/pydantic), [orjson](https://github.com/ijl/orjson) and [sgp4](https://github.com/brandon-rhodes/python-sgp4).\n\nUpdates `uvicorn` from 0.24.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.24.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.14.0 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `orjson` from 3.11.6 to 3.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/releases\"\u003eorjson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialization implementation substantially rewritten.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for Python 3.15. For Python 3.15 and later,\n\u003ccode\u003emanylinux_2_39\u003c/code\u003e (2024) is targeted instead of \u003ccode\u003emanylinux_2_17\u003c/code\u003e (2012).\u003c/li\u003e\n\u003cli\u003eNo longer publish PyPI wheels for ppc64le and s390x.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.9\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild now depends on Rust 1.95 or later instead of 1.89.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix building on Rust 1.95.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.8\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ijl/orjson/blob/master/CHANGELOG.md\"\u003eorjson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.13.0 - 2026-08-17\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer publish PyPI wheels for Windows x86/i686.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize new Python 3.15 built-in type \u003ccode\u003efrozendict\u003c/code\u003e identical to\n\u003ccode\u003edict\u003c/code\u003e (PEP 814).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12.0 - 2026-08-14\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSerialization implementation substantially rewritten.\u003c/li\u003e\n\u003cli\u003ePublish PyPI wheels for Python 3.15. For Python 3.15 and later,\n\u003ccode\u003emanylinux_2_39\u003c/code\u003e (2024) is targeted instead of \u003ccode\u003emanylinux_2_17\u003c/code\u003e (2012).\u003c/li\u003e\n\u003cli\u003eNo longer publish PyPI wheels for ppc64le and s390x.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.9 - 2026-05-06\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild now depends on Rust 1.95 or later instead of 1.89.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix building on Rust 1.95.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.8 - 2026-03-31\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and compatibility improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.7 - 2026-02-02\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse a faster library to serialize \u003ccode\u003efloat\u003c/code\u003e. Users with byte-exact regression\ntests should note positive exponents are now written using a \u003ccode\u003e+\u003c/code\u003e, e.g.,\n\u003ccode\u003e1.2e+30\u003c/code\u003e instead of \u003ccode\u003e1.2e30\u003c/code\u003e. Both formats are spec-compliant.\u003c/li\u003e\n\u003cli\u003eABI compatibility with CPython 3.15 alpha 5 free-threading.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/bd00937c5c46ab20eb5d7fe1cfc034b906c4578f\"\u003e\u003ccode\u003ebd00937\u003c/code\u003e\u003c/a\u003e 3.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/de1fd5a0bf3497c22267fe21ce9038fee4d9dacc\"\u003e\u003ccode\u003ede1fd5a\u003c/code\u003e\u003c/a\u003e frozendict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/f110dbe19873fe532b9dffa6c022d2769ed95479\"\u003e\u003ccode\u003ef110dbe\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/6737895a1a4e3e26df0569a40147893a786f9a58\"\u003e\u003ccode\u003e6737895\u003c/code\u003e\u003c/a\u003e 3.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/c2a6e8ff7b898635fb68a85bd5a62df1edf61cfc\"\u003e\u003ccode\u003ec2a6e8f\u003c/code\u003e\u003c/a\u003e JsonWriter, iterators\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/6a2d7a7d66dc3c5698625a7b334c40db459e46ae\"\u003e\u003ccode\u003e6a2d7a7\u003c/code\u003e\u003c/a\u003e yyjson 1ea2fb0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/97bf170d9726e91c891f35eae4892801520b9dce\"\u003e\u003ccode\u003e97bf170\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/705515d77b28429d0b7c30c3d781abe52e8a1e5a\"\u003e\u003ccode\u003e705515d\u003c/code\u003e\u003c/a\u003e 3.11.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/d19055d5bab432f98d53b71606a9c6c23fb21bf6\"\u003e\u003ccode\u003ed19055d\u003c/code\u003e\u003c/a\u003e build update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/77e2d96c3febe099cde2447856fe2523d68c71b0\"\u003e\u003ccode\u003e77e2d96\u003c/code\u003e\u003c/a\u003e MSRV 1.95, remove compiler feature detection\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.6...3.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sgp4` from 2.25 to 2.27\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/6e7428df7acc48e8176828289a8c14486a114759\"\u003e\u003ccode\u003e6e7428d\u003c/code\u003e\u003c/a\u003e Actual 2.27: forgot to update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/66ab17c859f217f19374c0ad240d080fcba567ef\"\u003e\u003ccode\u003e66ab17c\u003c/code\u003e\u003c/a\u003e Declare version 2.27\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/50919194481f6e89a6bb26ec435bd2ac4674aa48\"\u003e\u003ccode\u003e5091919\u003c/code\u003e\u003c/a\u003e Reinstate doctests (they now live in \u003ccode\u003eREADME.rst\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/96cf168d5e253148cab46df2c5337058a49cc13f\"\u003e\u003ccode\u003e96cf168\u003c/code\u003e\u003c/a\u003e Pivot check_satrec(), check_satrec() off of docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/20a13b4022fce80b40084ab0001fa5453d6e85e6\"\u003e\u003ccode\u003e20a13b4\u003c/code\u003e\u003c/a\u003e Move README material out of \u003cstrong\u003einit\u003c/strong\u003e.py for \u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/165\"\u003e#165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/1556433a243945677f17575dcc18ae9dac806de1\"\u003e\u003ccode\u003e1556433\u003c/code\u003e\u003c/a\u003e Declare version 2.26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/89342d15b3f37b34faa12465416173df85b0a514\"\u003e\u003ccode\u003e89342d1\u003c/code\u003e\u003c/a\u003e CI: add musllinux to the build matrix (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/6843678f9dd5c75c5b0cf84c8844957ef09b7a3f\"\u003e\u003ccode\u003e6843678\u003c/code\u003e\u003c/a\u003e CI: upgrade out-of-date Github Actions (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/162\"\u003e#162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/7805490ff98afa2021eb9eb20790b4c50fb68725\"\u003e\u003ccode\u003e7805490\u003c/code\u003e\u003c/a\u003e Move cibuildwheel's configuration to TOML (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/159\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/commit/1492f7ecf6e94fbc3b9ea86f03acc2b25a03eca2\"\u003e\u003ccode\u003e1492f7e\u003c/code\u003e\u003c/a\u003e Declare Python 3 wheels abi3-compliant (\u003ca href=\"https://redirect.github.com/brandon-rhodes/python-sgp4/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/brandon-rhodes/python-sgp4/compare/2.25...2.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/projectideamaterials1-dev/NSH/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/projectideamaterials1-dev%2FNSH/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"}},{"old_version":"0.53.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-14T19:33:26.000Z","version_change":"0.53.0 → 0.54.0","issue":{"uuid":"5854323007","node_id":"PR_kwDOUnyTTc8AAAABIeGfVA","number":11,"state":"closed","title":"chore(deps): bump the minor-and-patch group across 1 directory with 22 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-14T22:48:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T19:33:26.000Z","updated_at":"2026-10-14T22:48:59.000Z","time_to_close":11730,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-and-patch","update_count":22,"packages":[{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"faiss-cpu","old_version":"1.15.0","new_version":"1.15.1","repository_url":"https://github.com/facebookresearch/faiss"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastembed","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/qdrant/fastembed"},{"name":"fsspec","old_version":"2026.7.0","new_version":"2026.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"httpcore2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"httpx2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"llama-cpp-python","old_version":"0.3.19","new_version":"0.3.36","repository_url":"https://github.com/abetlen/llama-cpp-python"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"numpy","old_version":"2.5.3","new_version":"2.5.4","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.30.0","new_version":"1.31.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"protobuf","old_version":"7.36.1","new_version":"7.36.2"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pypdf","old_version":"6.18.1","new_version":"6.20.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"pytest-asyncio","old_version":"1.2.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"sse-starlette","old_version":"3.4.11","new_version":"3.5.0","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tokenizers","old_version":"0.23.2","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 22 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [faiss-cpu](https://github.com/facebookresearch/faiss) | `1.15.0` | `1.15.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [fastembed](https://github.com/qdrant/fastembed) | `0.8.0` | `0.9.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.7.0` | `2026.9.0` |\n| [httpcore2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [llama-cpp-python](https://github.com/abetlen/llama-cpp-python) | `0.3.19` | `0.3.36` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [numpy](https://github.com/numpy/numpy) | `2.5.3` | `2.5.4` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.30.0` | `1.31.0` |\n| [protobuf](https://developers.google.com/protocol-buffers/) | `7.36.1` | `7.36.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.18.1` | `6.20.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.2.0` | `1.4.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.11` | `3.5.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.23.2` | `0.23.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n\n\nUpdates `charset-normalizer` from 3.5.1 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.5.1...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faiss-cpu` from 1.15.0 to 1.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/releases\"\u003efaiss-cpu's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for the full list of changes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003efaiss-cpu's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.1] - 2026-09-15\u003c/h2\u003e\n\u003cp\u003eAdded\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548 Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e4fdbc9dc18adbfef3cd410a2446aa4c757320a8a Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb5a14632a6f2bfdc824c86d683b9d6e9205c2604 Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee6bd1d252caa5b9315a04390269d382845984ae2 Add AVX512 VPOPCNT dynamic dispatch level (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5531\"\u003e#5531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7f4cedda9c384de652c7bd5690db0f808d668216 Add staged RaBitQ storage to HNSW (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5526\"\u003e#5526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecfbf4ec5ff68d0bca4701d0b24b8a0736e110932 SVS: allow option to disable vector storing (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5525\"\u003e#5525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecda4f6e7133c629e502c2ea9bc51e0ef51847ab1 Expose \u003ccode\u003eIndexBinaryIVF.set_direct_map_type\u003c/code\u003e via the C API (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5451\"\u003e#5451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e256980cb6ea6610e4b0edf497a038086df8bbfce Add SVE low-dimensional nearest fast path and spherical SuperKMeans support (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5530\"\u003e#5530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3a716ead1a3c4562fe6e96d982d26789c58e19ed Add Windows ARM64 support to CI (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5544\"\u003e#5544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7059eaf7da7eddda62e71367e684d4bdedd7f94f Add AVX512 bitplane kernel for multi-bit RaBitQ inner product (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5522\"\u003e#5522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea424dcb809fd725c44dd976d9063febd4837d16a faiss HNSW: add opt-in deterministic lock-free graph build (faiss::hnsw_deterministic_build) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5486\"\u003e#5486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eda3191e754b49ca67b6503a9262e96ce5a3d8ed8 IDSelectorWithContext: extend context hook to IVFPQ/PQR, multibit RaBitQ, and Panorama scanners (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5491\"\u003e#5491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eedddbc998e858f16330f9b226dfd72f73d4d1d46 IDSelectorWithContext: scan-context hook for locality-aware selectors (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5490\"\u003e#5490\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3bb48643ab8ea9e50162b354d2463270acd6ed9c Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6bbb068ad8dab612b84304400846da1b14539085 Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3c7042f17a467c38d99f490ef39e4dfa615dc510 Let the binary Hamming paths reach the VPOPCNT kernels\u003c/li\u003e\n\u003cli\u003e9f993087b07e83f026248addb01dd99e99b15a3e Name the SIMD level masks after what they hold (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5600\"\u003e#5600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee2cf9e1ebf24c14b888fa69eee96713aa6d64b1a Accept ragged code sizes in faiss::hammings(), and fix the vectorization axis for wide codes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5520\"\u003e#5520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e545550f6a27031c2269881d97237fd6a5bef15df Use unittest assertions and f-strings in test_index_composite (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5571\"\u003e#5571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaf9eeffcf70d7795107c2b0511bdba507ac45339 Reserve cs vector capacity in hammings_knn_mc_impl to avoid reallocations (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5548\"\u003e#5548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e317a207bcacfcfa695d98289c3f4ea562b782837 ARM SVE optimization for L2 distance kernels adapted to new simd_impl structure (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5098\"\u003e#5098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2027d3b33144dbf19674b540ec0e31b2f842b1cc Make cuVS dispatch opt-in rather than build-implied (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5529\"\u003e#5529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea39e2606887bbacc6c8f54e783c4b42da00cf4b3 Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5521\"\u003e#5521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1f93154314afbef210f0ebebeab840da22f9ec7d Revert D114685755: Fold multi-GPU CAGRA build into train(), delete trainMultiGpu\u003c/li\u003e\n\u003cli\u003e6644dcfa5576221b1a4417fd766a8b2af71d869e Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5500\"\u003e#5500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e80a16564f86530dbf0bfaf96c2b71feffeb5093f Enable Faiss dynamic dispatch for OVIS and VeST fbpkgs (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5515\"\u003e#5515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2688c34f942c8462d97c8632c720a53653456270 Parallelize the k-means++ D^2 seeding update (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5457\"\u003e#5457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e76c67b7b736ca80c2b3ea29528434d6583adc88b Update default Panorama batch size to 1024 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3b50babc5914570576b09da043f64dfd7d62a075 Optimize RVV batch-4 distance kernels (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5469\"\u003e#5469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e7c3b55c01b8418dc044881625a260fceae9c712b Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efb2d57a3121c073828d2ed7d04ccf09d8bea771c Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efc13c81fb8b22f76e4c2c7bd2f027bd049b9a207 Stop aarch64 falling back to SIMDLevel::NONE in faiss dispatch (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5572\"\u003e#5572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e00928e3f7628b8288c17cfece5ee9600a8287f56 Fix ROCm CI: build in a dedicated conda env instead of the runner's broken base (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5545\"\u003e#5545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1e5780fbbfbe191f3ed3517f93ace8301239e9b2 Fix OOB read in \u003ccode\u003ePanorama::reconstruct\u003c/code\u003e via \u003ccode\u003eIndexPreTransform\u003c/code\u003e (T287094917) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5562\"\u003e#5562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2ed4c106e9fb9686e7727e5daf8ad6ad1e164109 Fix: Windows SIMD detection (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5497\"\u003e#5497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb4c66ba6031d1f659163e43430f8ce745b0dbe79 Fix reverse_index_factory/get_code_size round-trip for HNSW, IMI and IVFPQR (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5564\"\u003e#5564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ec0084f5cd2534236acda05cf7b8e0fc8062ddec3 Clamp EDEN unbiased L2 distances to be non-negative (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5569\"\u003e#5569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6457e941f5f4808303bb480679cb78df0df51934 Contain DirectoryArchiver entries within the extraction root (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5561\"\u003e#5561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eac60182fc009476c91a2788e639191d1f624157f RaBitQ: Fix zero residual sign convention (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5553\"\u003e#5553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1a0cfa64e015923d5009d8c7d917aa591e9eac9a Apply the deserialization byte limit to SVS IVF (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5568\"\u003e#5568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e718002f7cf269f3f3752dde04a4cc3f8eabb0050 Fix distance conversion in IndexBinaryFromFloat for non-L2 metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5549\"\u003e#5549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e02ea14372c9983f3eaa15698512180dc62ea234d Fix range_search_max_results to respect all similarity metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5533\"\u003e#5533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebd7087453e6d2262b6e6c76ab0cfa1e2dfeddebf fix(faiss): use is_similarity_metric for IndexShardsIVF merge (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5541\"\u003e#5541\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/75c755c5a1fc854756aaf3bd1131213aeb21d8d1\"\u003e\u003ccode\u003e75c755c\u003c/code\u003e\u003c/a\u003e Add missing CHANGELOG entry for \u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e in v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5651\"\u003e#5651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/d63faeaf5a9b5133c1a500d6c0cf9d934c075cf8\"\u003e\u003ccode\u003ed63faea\u003c/code\u003e\u003c/a\u003e Increment to next release, v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5645\"\u003e#5645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548\"\u003e\u003ccode\u003e3b3711c\u003c/code\u003e\u003c/a\u003e Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3bb48643ab8ea9e50162b354d2463270acd6ed9c\"\u003e\u003ccode\u003e3bb4864\u003c/code\u003e\u003c/a\u003e Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/7c3b55c01b8418dc044881625a260fceae9c712b\"\u003e\u003ccode\u003e7c3b55c\u003c/code\u003e\u003c/a\u003e Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/fb2d57a3121c073828d2ed7d04ccf09d8bea771c\"\u003e\u003ccode\u003efb2d57a\u003c/code\u003e\u003c/a\u003e Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/a74867cf56a73234ad5d957e40c35c9616d4d273\"\u003e\u003ccode\u003ea74867c\u003c/code\u003e\u003c/a\u003e faiss HNSW: delete the flag and the lock-based graph build (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5611\"\u003e#5611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/4fdbc9dc18adbfef3cd410a2446aa4c757320a8a\"\u003e\u003ccode\u003e4fdbc9d\u003c/code\u003e\u003c/a\u003e Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/b5a14632a6f2bfdc824c86d683b9d6e9205c2604\"\u003e\u003ccode\u003eb5a1463\u003c/code\u003e\u003c/a\u003e Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/6bbb068ad8dab612b84304400846da1b14539085\"\u003e\u003ccode\u003e6bbb068\u003c/code\u003e\u003c/a\u003e Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebookresearch/faiss/compare/v1.15.0...v1.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastembed` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/qdrant/fastembed/releases\"\u003efastembed's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - \u003ccode\u003etoken_count()\u003c/code\u003e loads only the tokenizer, not the ONNX model, when \u003ccode\u003elazy_load=True\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e - add \u003ccode\u003elightonai/LateOn\u003c/code\u003e and the multilingual \u003ccode\u003elightonai/mLateOn\u003c/code\u003e by \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/655\"\u003e#655\u003c/a\u003e - add \u003ccode\u003estemmer\u003c/code\u003e and \u003ccode\u003estopwords\u003c/code\u003e parameters to \u003ccode\u003eQdrant/bm25\u003c/code\u003e for languages without a Snowball stemmer, such as Polish by \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/702\"\u003e#702\u003c/a\u003e - add \u003ccode\u003eibm-granite/granite-embedding-small-english-r2\u003c/code\u003e by \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/743\"\u003e#743\u003c/a\u003e - add \u003ccode\u003eBAAI/bge-reranker-v2-m3\u003c/code\u003e and its int8 version \u003ccode\u003eBAAI/bge-reranker-v2-m3-int8\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/747\"\u003e#747\u003c/a\u003e - speed up MUVERA document encoding for large \u003ccode\u003ek_sim\u003c/code\u003e values by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/751\"\u003e#751\u003c/a\u003e - add \u003ccode\u003eQdrant/stella-en-400M-v5-doc-onnx\u003c/code\u003e for documents and the small query encoders \u003ccode\u003eQdrant/constella-zero\u003c/code\u003e and \u003ccode\u003eQdrant/constella-nano\u003c/code\u003e that search its embeddings by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/756\"\u003e#756\u003c/a\u003e - add \u003ccode\u003eoutput_name\u003c/code\u003e to \u003ccode\u003eTextEmbedding.add_custom_model()\u003c/code\u003e to choose which ONNX output a custom model uses by \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes 🔧\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - fix BM42 and miniCOIL failing, and ColBERT keeping punctuation vectors, with \u003ccode\u003elazy_load=True\u003c/code\u003e and \u003ccode\u003eparallel\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/642\"\u003e#642\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/726\"\u003e#726\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/727\"\u003e#727\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/728\"\u003e#728\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/729\"\u003e#729\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/730\"\u003e#730\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/732\"\u003e#732\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e - make model downloads more reliable: re-download corrupted cached files, retry on more network errors, time out on an unresponsive Hugging Face endpoint, and download built-in models from Hugging Face only (see Upgrade Notes) by \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/670\"\u003e#670\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/734\"\u003e#734\u003c/a\u003e - fix a hang when a \u003ccode\u003eparallel\u003c/code\u003e run is stopped early, for example with \u003ccode\u003ebreak\u003c/code\u003e by \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/721\"\u003e#721\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e for a \u003ccode\u003ebatch_size\u003c/code\u003e below 1 by \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/723\"\u003e#723\u003c/a\u003e - fix the licenses listed for \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e (\u003ccode\u003egemma\u003c/code\u003e) and the Unicom models (\u003ccode\u003emit\u003c/code\u003e) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/725\"\u003e#725\u003c/a\u003e - accept nearest-neighbor interpolation in Jina CLIP image preprocessing by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/731\"\u003e#731\u003c/a\u003e - match Jina's center crop in \u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e preprocessing, which was off by 1 px for some image sizes by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/733\"\u003e#733\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e when MUVERA encodes an empty multivector by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/746\"\u003e#746\u003c/a\u003e - fix center crop returning undersized images when it pads by an odd number of pixels by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/754\"\u003e#754\u003c/a\u003e - return \u003ccode\u003efloat32\u003c/code\u003e instead of \u003ccode\u003efloat64\u003c/code\u003e embeddings from mean-pooling text models, such as \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e (regression in 0.6.1) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/757\"\u003e#757\u003c/a\u003e - fix loading models with \u003ccode\u003e.onnx_data\u003c/code\u003e weights from a \u003ccode\u003ehuggingface_hub\u0026gt;=1.32\u003c/code\u003e cache with \u003ccode\u003eonnxruntime\u0026gt;=1.24\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/760\"\u003e#760\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/761\"\u003e#761\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/784\"\u003e#784\u003c/a\u003e - fix \u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e image embeddings in batches that mix aspect ratios, for portrait images, and for very thin images, and speed up its text queries (see Upgrade Notes) by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/768\"\u003e#768\u003c/a\u003e - return \u003ccode\u003eint64\u003c/code\u003e indices from \u003ccode\u003eSparseEmbedding.from_dict({})\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/769\"\u003e#769\u003c/a\u003e - fix a token ID overflow in \u003ccode\u003eQdrant/bm25\u003c/code\u003e query embeddings by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/770\"\u003e#770\u003c/a\u003e - respect \u003ccode\u003ecuda=False\u003c/code\u003e in \u003ccode\u003eparallel\u003c/code\u003e workers, which ran on the GPU when \u003ccode\u003eonnxruntime-gpu\u003c/code\u003e was installed (regression in 0.8.0) by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/771\"\u003e#771\u003c/a\u003e - respect \u003ccode\u003edo_resize=False\u003c/code\u003e in ConvNeXT image preprocessing by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/773\"\u003e#773\u003c/a\u003e - keep very small SPLADE weights by computing them with \u003ccode\u003elog1p\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/775\"\u003e#775\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/776\"\u003e#776\u003c/a\u003e - honor the truncation and padding side from the model's tokenizer config by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuilt-in models now download from Hugging Face only, without the Google Cloud Storage (GCS) fallback some of them had. The GCS buckets stay open, so older versions keep working, and custom models still support both \u003ccode\u003eurl\u003c/code\u003e and \u003ccode\u003ehf\u003c/code\u003e sources. GCS copies cached by older versions still load offline or when Hugging Face is unreachable, with a \u003ccode\u003eFutureWarning\u003c/code\u003e: load the model once online, then delete its \u003ccode\u003efast-\u0026lt;model name\u0026gt;\u003c/code\u003e dir.\u003c/li\u003e\n\u003cli\u003eWe removed a stray 128-token limit from the Hugging Face configs of \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e and \u003ccode\u003eQdrant/bm42-all-minilm-l6-v2-attentions\u003c/code\u003e (now 256 tokens), and \u003ccode\u003ethenlper/gte-large\u003c/code\u003e and \u003ccode\u003eprithivida/Splade_PP_en_v1\u003c/code\u003e (now 512). This applies to any fastembed version on a fresh download, and embeddings of texts over 128 tokens change. A cached model keeps the old limit until you delete it from the cache.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e now loads \u003ccode\u003emodel_v2.onnx\u003c/code\u003e and drops padding rows from its embeddings, so offline setups need to download it first. Re-embed images that were embedded in batches with images of other aspect ratios. The model needs \u003ccode\u003eonnxruntime\u0026gt;=1.19\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLateInteractionMultimodalEmbedding.embed_image\u003c/code\u003e now defaults to \u003ccode\u003ebatch_size=2\u003c/code\u003e instead of 16, which also applies to \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e image embeddings change for some image sizes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to everyone who contributed to this release \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.8.1\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/539499b855478bcb6a810ac89a047de24c3b1866\"\u003e\u003ccode\u003e539499b\u003c/code\u003e\u003c/a\u003e bump version to v0.9.0 (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/789\"\u003e#789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b2e7debc696a71f85ad379df050d0b34c683cf23\"\u003e\u003ccode\u003eb2e7deb\u003c/code\u003e\u003c/a\u003e chore: remove redundant comment (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/788\"\u003e#788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/3c267018ebdbf84924e089e3148aeaf477662bca\"\u003e\u003ccode\u003e3c26701\u003c/code\u003e\u003c/a\u003e fix: show progress bars when downloading new or corrupted model files (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/db785ee93077fce5da745dca921ff9c40863f18f\"\u003e\u003ccode\u003edb785ee\u003c/code\u003e\u003c/a\u003e fix: ColModernVBERT tile grids, mixed-size image batches and fast text querie...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/c0588acf95250d2497e5f5e83233ef343ea74842\"\u003e\u003ccode\u003ec0588ac\u003c/code\u003e\u003c/a\u003e new: create an issue when weekly ci fails (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/781\"\u003e#781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0abff4d6d8c73003697993d2ca3123b3db5b2da7\"\u003e\u003ccode\u003e0abff4d\u003c/code\u003e\u003c/a\u003e new: check wheel before publishing (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/783\"\u003e#783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b566dcb9052dff0878d2ee57c695dd2a89a92d52\"\u003e\u003ccode\u003eb566dcb\u003c/code\u003e\u003c/a\u003e fix: don't fail a download when an older revision is cached (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0db8d09e7c569c2e2f508ef04eabe5ca57309c84\"\u003e\u003ccode\u003e0db8d09\u003c/code\u003e\u003c/a\u003e docs: show full supported model names (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/637\"\u003e#637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/02563ea78aa41e59112b1e9c66352c14bd98040a\"\u003e\u003ccode\u003e02563ea\u003c/code\u003e\u003c/a\u003e feat: Add lightonai/LateOn model (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/6b1e1d2ac5783e639138b3529973cdca45902372\"\u003e\u003ccode\u003e6b1e1d2\u003c/code\u003e\u003c/a\u003e new: add weekly ci to test all models (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/767\"\u003e#767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/qdrant/fastembed/compare/v0.8.0...v0.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fsspec` from 2026.7.0 to 2026.9.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/0f76baaae4a227b085b18e8469e6cc1792a95ade\"\u003e\u003ccode\u003e0f76baa\u003c/code\u003e\u003c/a\u003e changelog (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2166\"\u003e#2166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/695f831c2a2c55b48b11045ea2f2b34d529eaa43\"\u003e\u003ccode\u003e695f831\u003c/code\u003e\u003c/a\u003e Add age-based cleanup for simplecache (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2118\"\u003e#2118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/42aa46875c50f43d2d258540981772b86da7a6fb\"\u003e\u003ccode\u003e42aa468\u003c/code\u003e\u003c/a\u003e Mirror \u003ccode\u003ereadinto\u003c/code\u003e from the pyarrow stream onto \u003ccode\u003eArrowFile\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2111\"\u003e#2111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/4a4e6ae778d9cbc8f036a0b7af9467d94d0acac6\"\u003e\u003ccode\u003e4a4e6ae\u003c/code\u003e\u003c/a\u003e Make the SFTP host key policy configurable (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2126\"\u003e#2126\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/a0ce6dbecad9d42f19a2e1462cb61fec9b77da2e\"\u003e\u003ccode\u003ea0ce6db\u003c/code\u003e\u003c/a\u003e Normalize paths in AsyncFileSystemWrapper like the wrapped filesystem (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/c5fea6d8e8c140a0cacbe94fa573df5becbf192e\"\u003e\u003ccode\u003ec5fea6d\u003c/code\u003e\u003c/a\u003e Fix cat_ranges on whole-file caches after \u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2154\"\u003e#2154\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2163\"\u003e#2163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/9efb18b4939d01ac9b06a481bda8125f48dbc738\"\u003e\u003ccode\u003e9efb18b\u003c/code\u003e\u003c/a\u003e Patch HAS_CPYTHON_API where _fast_slice reads it (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2164\"\u003e#2164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/27bcd35c5487570da9f3a97fd66a3f4268ca0c87\"\u003e\u003ccode\u003e27bcd35\u003c/code\u003e\u003c/a\u003e feat(AdaptiveReadaheadCache): introducing a new cache-type adaptive (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2093\"\u003e#2093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/a681aca115b6687a1ea1fcfd4ac1f5f8c4cc03c5\"\u003e\u003ccode\u003ea681aca\u003c/code\u003e\u003c/a\u003e Ignore a leading slash in TarFileSystem paths (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2148\"\u003e#2148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fsspec/filesystem_spec/commit/57c55f87d780856181653eca4d5cc14e22d8e5f9\"\u003e\u003ccode\u003e57c55f8\u003c/code\u003e\u003c/a\u003e Make names relative in DirFileSystem.walk(detail=True) (\u003ca href=\"https://redirect.github.com/fsspec/filesystem_spec/issues/2160\"\u003e#2160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fsspec/filesystem_spec/compare/2026.7.0...2026.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpcore2` from 2.13.0 to 2.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/httpx2/releases\"\u003ehttpcore2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.1\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003e📤 Accurate file upload lengths\u003c/h3\u003e\n\u003cp\u003ePassing a file as \u003ccode\u003econtent=\u003c/code\u003e now calculates \u003ccode\u003eContent-Length\u003c/code\u003e from its remaining bytes, respecting the current file position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🔐 Reliable proxy TLS and HTTP/2 negotiation\u003c/h3\u003e\n\u003cp\u003eTLS hostname overrides now apply inside HTTP proxy tunnels without affecting the proxy's own TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e). HTTP/2 is advertised first when enabled, and HTTP/1.1 is omitted when disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🧹 Clean WebSocket shutdown\u003c/h3\u003e\n\u003cp\u003eThe sync WebSocket keepalive thread now exits cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003ehttpx2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCalculate \u003ccode\u003eContent-Length\u003c/code\u003e from the remaining bytes when a file is passed as \u003ccode\u003econtent=\u003c/code\u003e, respecting its current position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStop the sync WebSocket keepalive thread cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ehttpcore2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHonor the \u003ccode\u003esni_hostname\u003c/code\u003e extension for TLS inside HTTP proxy tunnels without applying it to the proxy's TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePrefer HTTP/2 during TLS protocol negotiation when enabled, and stop advertising HTTP/1.1 when it is disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/d91c9f4236523eb5978ca800944fa0078f17409f\"\u003e\u003ccode\u003ed91c9f4\u003c/code\u003e\u003c/a\u003e Correct the upcoming release version to 2.13.1 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/62a607d0772ba567917a26afb4e7a83f104a10d6\"\u003e\u003ccode\u003e62a607d\u003c/code\u003e\u003c/a\u003e Prepare version 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/392bbedf4a40e56fe0d7ab42f2bc97d69f646585\"\u003e\u003ccode\u003e392bbed\u003c/code\u003e\u003c/a\u003e Honor the TLS hostname override in proxy tunnels (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/df9783d23b9508b7e6a2277217dae496e3435462\"\u003e\u003ccode\u003edf9783d\u003c/code\u003e\u003c/a\u003e Respect file cursor positions when calculating raw content length (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/36c40098b2ad80172a39548f2a62a9d3fa8a5094\"\u003e\u003ccode\u003e36c4009\u003c/code\u003e\u003c/a\u003e httpcore2: prefer h2 for ALPN protocol if requesting HTTP/2 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/04d152ba8ef082f68feb21fe0e13e361215b942d\"\u003e\u003ccode\u003e04d152b\u003c/code\u003e\u003c/a\u003e docs: correct stale URL.query example (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx2` from 2.13.0 to 2.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/httpx2/releases\"\u003ehttpx2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.1\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003e📤 Accurate file upload lengths\u003c/h3\u003e\n\u003cp\u003ePassing a file as \u003ccode\u003econtent=\u003c/code\u003e now calculates \u003ccode\u003eContent-Length\u003c/code\u003e from its remaining bytes, respecting the current file position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🔐 Reliable proxy TLS and HTTP/2 negotiation\u003c/h3\u003e\n\u003cp\u003eTLS hostname overrides now apply inside HTTP proxy tunnels without affecting the proxy's own TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e). HTTP/2 is advertised first when enabled, and HTTP/1.1 is omitted when disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003e🧹 Clean WebSocket shutdown\u003c/h3\u003e\n\u003cp\u003eThe sync WebSocket keepalive thread now exits cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003ehttpx2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCalculate \u003ccode\u003eContent-Length\u003c/code\u003e from the remaining bytes when a file is passed as \u003ccode\u003econtent=\u003c/code\u003e, respecting its current position (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStop the sync WebSocket keepalive thread cleanly when a ping races with connection shutdown (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ehttpcore2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHonor the \u003ccode\u003esni_hostname\u003c/code\u003e extension for TLS inside HTTP proxy tunnels without applying it to the proxy's TLS connection (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1223\"\u003e#1223\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePrefer HTTP/2 during TLS protocol negotiation when enabled, and stop advertising HTTP/1.1 when it is disabled (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1155\"\u003e#1155\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/httpx2/blob/main/src/httpx2/CHANGELOG.md\"\u003ehttpx2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.13.1 (September 23rd, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCalculate \u003ccode\u003eContent-Length\u003c/code\u003e from the remaining bytes when a file is passed as \u003ccode\u003econtent=\u003c/code\u003e, respecting its current position.\n(\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop the sync WebSocket keepalive thread cleanly when a ping races with connection shutdown.\n(\u003ca href=\"https://redirect.github.com/pydantic/httpx2/pull/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/d91c9f4236523eb5978ca800944fa0078f17409f\"\u003e\u003ccode\u003ed91c9f4\u003c/code\u003e\u003c/a\u003e Correct the upcoming release version to 2.13.1 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/62a607d0772ba567917a26afb4e7a83f104a10d6\"\u003e\u003ccode\u003e62a607d\u003c/code\u003e\u003c/a\u003e Prepare version 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/df9783d23b9508b7e6a2277217dae496e3435462\"\u003e\u003ccode\u003edf9783d\u003c/code\u003e\u003c/a\u003e Respect file cursor positions when calculating raw content length (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/httpx2/commit/04d152ba8ef082f68feb21fe0e13e361215b942d\"\u003e\u003ccode\u003e04d152b\u003c/code\u003e\u003c/a\u003e docs: correct stale URL.query example (\u003ca href=\"https://redirect.github.com/pydantic/httpx2/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/httpx2/compare/v2.13.0...v2.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.19 to 3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.20 (2026-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d55e65e1a3b1ede7f556bc202738066f5597e249\"\u003e\u003ccode\u003ed55e65e\u003c/code\u003e\u003c/a\u003e Release 3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0c0824a928e50048e59d4ce55fe760dba30528bc\"\u003e\u003ccode\u003e0c0824a\u003c/code\u003e\u003c/a\u003e Pre-release 3.20rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bd7c316a08761c79ba557b5b9e6a3da24d71fa88\"\u003e\u003ccode\u003ebd7c316\u003c/code\u003e\u003c/a\u003e Note Python 3.15 support in the 3.20 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b6cce8523eae3442aba976f01607b1cdf797c6ff\"\u003e\u003ccode\u003eb6cce85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/276\"\u003e#276\u003c/a\u003e from kjd/unicode-18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/9a4bc59e9d5ab89e7916fc0a50650cb55e3faf26\"\u003e\u003ccode\u003e9a4bc59\u003c/code\u003e\u003c/a\u003e Update to Unicode 18.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/dfab5a06affddcc7781a7bbab1cac1bb7d3b4e05\"\u003e\u003ccode\u003edfab5a0\u003c/code\u003e\u003c/a\u003e Merge branch 'python-3.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/417c35496ccbffad4b0a434ac9b563ee6f8fa0a9\"\u003e\u003ccode\u003e417c354\u003c/code\u003e\u003c/a\u003e Read the latest Unicode version from the DerivedAge.txt header instead of the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cd1739200f3bf07871372bcb31c271de136eaccf\"\u003e\u003ccode\u003ecd17392\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/274\"\u003e#274\u003c/a\u003e from kjd/fix-decode-length-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5796d79d44c76a54f03e8938dd22edaa1221c27\"\u003e\u003ccode\u003ec5796d7\u003c/code\u003e\u003c/a\u003e Skip the decode round-trip check for domains past encode's length limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ee690bf133e874351103b9fe838fdda2a7a09f\"\u003e\u003ccode\u003ed6ee690\u003c/code\u003e\u003c/a\u003e Update to Python 3.15 release candidate in CI and add trove classifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.19...v3.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `iniconfig` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.3.1\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eParsing values with many continuation lines is now linear instead of quadratic in time (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/78\"\u003e#78\u003c/a\u003e, regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/77\"\u003e#77\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA leading UTF-8 BOM is now stripped when reading INI files. Files saved by Windows editors used to fail with \u003ccode\u003eParseError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e, thanks \u003ca href=\"https://github.com/Pitchfork-and-Torch\"\u003e\u003ccode\u003e@​Pitchfork-and-Torch\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternal\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003einiconfig._parse.ParsedLine.value\u003c/code\u003e is now a list of lines. This is private API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe README example now uses \u003ccode\u003eIniConfig.parse()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/79\"\u003e#79\u003c/a\u003e, thanks \u003ca href=\"https://github.com/MbappeWU\"\u003e\u003ccode\u003e@​MbappeWU\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed the issue tracker link (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/74\"\u003e#74\u003c/a\u003e, thanks \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull diff:\u003c/strong\u003e \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/71\"\u003epytest-dev/iniconfig#71\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/72\"\u003epytest-dev/iniconfig#72\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix link to issues by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/74\"\u003epytest-dev/iniconfig#74\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eparse_lines: keep values as list of lines, join once by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/78\"\u003epytest-dev/iniconfig#78\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/73\"\u003epytest-dev/iniconfig#73\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: expect sorted \u003cstrong\u003eall\u003c/strong\u003e after ruff autofix by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/80\"\u003epytest-dev/iniconfig#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: use parse API in the README example by \u003ca href=\"https://github.com/MbappeWU\"\u003e\u003ccode\u003e@​MbappeWU\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/79\"\u003epytest-dev/iniconfig#79\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStrip leading UTF-8 BOM when reading INI files by \u003ca href=\"https://github.com/Pitchfork-and-Torch\"\u003e\u003ccode\u003e@​Pitchfork-and-Torch\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/76\"\u003epytest-dev/iniconfig#76\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echangelog: add BOM stripping (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e) to 2.3.1 by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/81\"\u003epytest-dev/iniconfig#81\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/74\"\u003epytest-dev/iniconfig#74\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MbappeWU\"\u003e\u003ccode\u003e@​MbappeWU\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/79\"\u003epytest-dev/iniconfig#79\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pitchfork-and-Torch\"\u003e\u003ccode\u003e@​Pitchfork-and-Torch\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/76\"\u003epytest-dev/iniconfig#76\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.3.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix quadratic parse time for values with many continuation lines (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/78\"\u003e#78\u003c/a\u003e, regarding \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/77\"\u003e#77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003estrip a leading UTF-8 BOM when reading INI files, which previously raised \u003ccode\u003eParseError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einternal: \u003ccode\u003einiconfig._parse.ParsedLine.value\u003c/code\u003e is now a list of lines\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/316fbfaf2752d89326e1e75b45cd070f5b5ace9a\"\u003e\u003ccode\u003e316fbfa\u003c/code\u003e\u003c/a\u003e changelog: add BOM stripping (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e) to 2.3.1 (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/81\"\u003e#81\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/d2dcb7289291e7e7019c183659814d42f7264b2d\"\u003e\u003ccode\u003ed2dcb72\u003c/code\u003e\u003c/a\u003e Strip leading UTF-8 BOM when reading INI files (\u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/76\"\u003e#76\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/40d8c03a1553953350d787e45f1cb768e2c14e6a\"\u003e\u003ccode\u003e40d8c03\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/79\"\u003e#79\u003c/a\u003e from MbappeWU/codex/docs-parse-inline-comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/48359c3a7c2c8648a134ea8469e802b5aa8d5030\"\u003e\u003ccode\u003e48359c3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/80\"\u003e#80\u003c/a\u003e from pytest-dev/claude/fix-iniconfig-test-eukh2n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/b153213a011fa92f4370c83cef614cf73c987f57\"\u003e\u003ccode\u003eb153213\u003c/code\u003e\u003c/a\u003e test: expect sorted \u003cstrong\u003eall\u003c/strong\u003e after ruff RUF022 autofix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/4fddfabc850afee28178931c62535ba1c2b30c72\"\u003e\u003ccode\u003e4fddfab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/73\"\u003e#73\u003c/a\u003e from pytest-dev/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/15852c2d1f9178ff960bf6c39a6f0f1495f1009e\"\u003e\u003ccode\u003e15852c2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/2e68639c3f41ea5b693f89807172cf304c94fb9e\"\u003e\u003ccode\u003e2e68639\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/23c9e088a909f16d0d8dc03b5090c66964c428b0\"\u003e\u003ccode\u003e23c9e08\u003c/code\u003e\u003c/a\u003e docs: use parse API in the README example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/e038536fbee6b5e76b180fce6694fd54661ced12\"\u003e\u003ccode\u003ee038536\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/78\"\u003e#78\u003c/a\u003e from RonnyPfannschmidt/claude/dazzling-einstein-h8zq7m\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.3.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-cpp-python` from 0.3.19 to 0.3.36\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/abetlen/llama-cpp-python/blob/main/CHANGELOG.md\"\u003ellama-cpp-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.36]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@0c1e57098\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.35]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@4df29be4f\u003c/li\u003e\n\u003cli\u003efix(example): retain recurrent state for server MTP rollback\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@adb55e514\u003c/li\u003e\n\u003cli\u003efix(server): show falsey defaults in CLI help by \u003ca href=\"https://github.com/cupkk\"\u003e\u003ccode\u003e@​cupkk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2355\"\u003e#2355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: release multimodal contexts when closing Llama by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2343\"\u003e#2343\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.34]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3546c794\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.33]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@78d2f5246\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.32]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): support chained NextN heads for server MTP drafting\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@b3fed31b9\u003c/li\u003e\n\u003cli\u003efix: preserve recurrent/hybrid model state when the full prompt is already cached by \u003ca href=\"https://github.com/allthatido\"\u003e\u003ccode\u003e@​allthatido\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2306\"\u003e#2306\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.31]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@f449e0553\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.30]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3a74b299\u003c/li\u003e\n\u003cli\u003efeat: add Pyodide wheel support by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2309\"\u003e#2309\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.29]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): use MTMD batch encoding by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues...\n\n_Description has been truncated_","html_url":"https://github.com/CJX0712/worldai/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJX0712%2Fworldai/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"0.53.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-14T19:16:27.000Z","version_change":"0.53.0 → 0.54.0","issue":{"uuid":"5854082031","node_id":"PR_kwDOUoBFHc8AAAABId6BWw","number":8,"state":"closed","title":"chore: bump the minor-and-patch group across 1 directory with 32 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":true,"comments_count":2,"pull_request":true,"closed_at":"2026-10-15T15:12:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T19:16:27.000Z","updated_at":"2026-10-15T15:12:51.000Z","time_to_close":71780,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"minor-and-patch","update_count":32,"packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"faiss-cpu","old_version":"1.15.0","new_version":"1.15.1","repository_url":"https://github.com/facebookresearch/faiss"},{"name":"fastembed","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/qdrant/fastembed"},{"name":"llama-cpp-python","old_version":"0.3.19","new_version":"0.3.36","repository_url":"https://github.com/abetlen/llama-cpp-python"},{"name":"pypdf","old_version":"6.18.1","new_version":"6.20.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"sse-starlette","old_version":"3.4.11","new_version":"3.5.0","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"pyjwt","old_version":"2.14.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"fsspec","old_version":"2026.7.0","new_version":"2026.9.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"hf-xet","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"httpcore2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"httpx2","old_version":"2.13.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/httpx2"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"mcp-types","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"mcp","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"mmh3","old_version":"5.3.0","new_version":"5.3.1","repository_url":"https://github.com/hajimes/mmh3"},{"name":"opentelemetry-api","old_version":"1.44.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"protobuf","old_version":"7.36.1","new_version":"7.36.2"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-asyncio","old_version":"1.2.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"python-dotenv","old_version":"1.2.3","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"ruff","old_version":"0.16.8","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tokenizers","old_version":"0.23.2","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"watchfiles","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 32 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [faiss-cpu](https://github.com/facebookresearch/faiss) | `1.15.0` | `1.15.1` |\n| [fastembed](https://github.com/qdrant/fastembed) | `0.8.0` | `0.9.0` |\n| [llama-cpp-python](https://github.com/abetlen/llama-cpp-python) | `0.3.19` | `0.3.36` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.18.1` | `6.20.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.11` | `3.5.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.14.0` | `2.15.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.7.0` | `2026.9.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.6.0` | `1.7.0` |\n| [httpcore2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.13.0` | `2.13.1` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [mcp-types](https://github.com/modelcontextprotocol/python-sdk) | `2.2.0` | `2.3.0` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `2.2.0` | `2.3.0` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.3.0` | `5.3.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.44.0` | `1.45.1` |\n| [protobuf](https://developers.google.com/protocol-buffers/) | `7.36.1` | `7.36.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.2.0` | `1.4.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3` | `1.2.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.8` | `0.17.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.23.2` | `0.23.3` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.2.0` | `1.3.0` |\n\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faiss-cpu` from 1.15.0 to 1.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/releases\"\u003efaiss-cpu's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for the full list of changes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md\"\u003efaiss-cpu's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.1] - 2026-09-15\u003c/h2\u003e\n\u003cp\u003eAdded\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548 Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e4fdbc9dc18adbfef3cd410a2446aa4c757320a8a Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb5a14632a6f2bfdc824c86d683b9d6e9205c2604 Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee6bd1d252caa5b9315a04390269d382845984ae2 Add AVX512 VPOPCNT dynamic dispatch level (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5531\"\u003e#5531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7f4cedda9c384de652c7bd5690db0f808d668216 Add staged RaBitQ storage to HNSW (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5526\"\u003e#5526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecfbf4ec5ff68d0bca4701d0b24b8a0736e110932 SVS: allow option to disable vector storing (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5525\"\u003e#5525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecda4f6e7133c629e502c2ea9bc51e0ef51847ab1 Expose \u003ccode\u003eIndexBinaryIVF.set_direct_map_type\u003c/code\u003e via the C API (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5451\"\u003e#5451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e256980cb6ea6610e4b0edf497a038086df8bbfce Add SVE low-dimensional nearest fast path and spherical SuperKMeans support (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5530\"\u003e#5530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3a716ead1a3c4562fe6e96d982d26789c58e19ed Add Windows ARM64 support to CI (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5544\"\u003e#5544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7059eaf7da7eddda62e71367e684d4bdedd7f94f Add AVX512 bitplane kernel for multi-bit RaBitQ inner product (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5522\"\u003e#5522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea424dcb809fd725c44dd976d9063febd4837d16a faiss HNSW: add opt-in deterministic lock-free graph build (faiss::hnsw_deterministic_build) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5486\"\u003e#5486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eda3191e754b49ca67b6503a9262e96ce5a3d8ed8 IDSelectorWithContext: extend context hook to IVFPQ/PQR, multibit RaBitQ, and Panorama scanners (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5491\"\u003e#5491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eedddbc998e858f16330f9b226dfd72f73d4d1d46 IDSelectorWithContext: scan-context hook for locality-aware selectors (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5490\"\u003e#5490\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e3bb48643ab8ea9e50162b354d2463270acd6ed9c Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6bbb068ad8dab612b84304400846da1b14539085 Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3c7042f17a467c38d99f490ef39e4dfa615dc510 Let the binary Hamming paths reach the VPOPCNT kernels\u003c/li\u003e\n\u003cli\u003e9f993087b07e83f026248addb01dd99e99b15a3e Name the SIMD level masks after what they hold (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5600\"\u003e#5600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ee2cf9e1ebf24c14b888fa69eee96713aa6d64b1a Accept ragged code sizes in faiss::hammings(), and fix the vectorization axis for wide codes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5520\"\u003e#5520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e545550f6a27031c2269881d97237fd6a5bef15df Use unittest assertions and f-strings in test_index_composite (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5571\"\u003e#5571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaf9eeffcf70d7795107c2b0511bdba507ac45339 Reserve cs vector capacity in hammings_knn_mc_impl to avoid reallocations (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5548\"\u003e#5548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e317a207bcacfcfa695d98289c3f4ea562b782837 ARM SVE optimization for L2 distance kernels adapted to new simd_impl structure (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5098\"\u003e#5098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2027d3b33144dbf19674b540ec0e31b2f842b1cc Make cuVS dispatch opt-in rather than build-implied (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5529\"\u003e#5529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ea39e2606887bbacc6c8f54e783c4b42da00cf4b3 Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5521\"\u003e#5521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1f93154314afbef210f0ebebeab840da22f9ec7d Revert D114685755: Fold multi-GPU CAGRA build into train(), delete trainMultiGpu\u003c/li\u003e\n\u003cli\u003e6644dcfa5576221b1a4417fd766a8b2af71d869e Fold multi-GPU CAGRA build into train(), delete trainMultiGpu (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5500\"\u003e#5500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e80a16564f86530dbf0bfaf96c2b71feffeb5093f Enable Faiss dynamic dispatch for OVIS and VeST fbpkgs (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5515\"\u003e#5515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2688c34f942c8462d97c8632c720a53653456270 Parallelize the k-means++ D^2 seeding update (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5457\"\u003e#5457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e76c67b7b736ca80c2b3ea29528434d6583adc88b Update default Panorama batch size to 1024 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5441\"\u003e#5441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e3b50babc5914570576b09da043f64dfd7d62a075 Optimize RVV batch-4 distance kernels (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5469\"\u003e#5469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e7c3b55c01b8418dc044881625a260fceae9c712b Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efb2d57a3121c073828d2ed7d04ccf09d8bea771c Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efc13c81fb8b22f76e4c2c7bd2f027bd049b9a207 Stop aarch64 falling back to SIMDLevel::NONE in faiss dispatch (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5572\"\u003e#5572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e00928e3f7628b8288c17cfece5ee9600a8287f56 Fix ROCm CI: build in a dedicated conda env instead of the runner's broken base (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5545\"\u003e#5545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1e5780fbbfbe191f3ed3517f93ace8301239e9b2 Fix OOB read in \u003ccode\u003ePanorama::reconstruct\u003c/code\u003e via \u003ccode\u003eIndexPreTransform\u003c/code\u003e (T287094917) (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5562\"\u003e#5562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e2ed4c106e9fb9686e7727e5daf8ad6ad1e164109 Fix: Windows SIMD detection (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5497\"\u003e#5497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eb4c66ba6031d1f659163e43430f8ce745b0dbe79 Fix reverse_index_factory/get_code_size round-trip for HNSW, IMI and IVFPQR (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5564\"\u003e#5564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ec0084f5cd2534236acda05cf7b8e0fc8062ddec3 Clamp EDEN unbiased L2 distances to be non-negative (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5569\"\u003e#5569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e6457e941f5f4808303bb480679cb78df0df51934 Contain DirectoryArchiver entries within the extraction root (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5561\"\u003e#5561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eac60182fc009476c91a2788e639191d1f624157f RaBitQ: Fix zero residual sign convention (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5553\"\u003e#5553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e1a0cfa64e015923d5009d8c7d917aa591e9eac9a Apply the deserialization byte limit to SVS IVF (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5568\"\u003e#5568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e718002f7cf269f3f3752dde04a4cc3f8eabb0050 Fix distance conversion in IndexBinaryFromFloat for non-L2 metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5549\"\u003e#5549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e02ea14372c9983f3eaa15698512180dc62ea234d Fix range_search_max_results to respect all similarity metrics (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5533\"\u003e#5533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebd7087453e6d2262b6e6c76ab0cfa1e2dfeddebf fix(faiss): use is_similarity_metric for IndexShardsIVF merge (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5541\"\u003e#5541\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/75c755c5a1fc854756aaf3bd1131213aeb21d8d1\"\u003e\u003ccode\u003e75c755c\u003c/code\u003e\u003c/a\u003e Add missing CHANGELOG entry for \u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e in v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5651\"\u003e#5651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/d63faeaf5a9b5133c1a500d6c0cf9d934c075cf8\"\u003e\u003ccode\u003ed63faea\u003c/code\u003e\u003c/a\u003e Increment to next release, v1.15.1 (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5645\"\u003e#5645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3b3711c112fbf7dfb9c64b6fcf90ffc3ca412548\"\u003e\u003ccode\u003e3b3711c\u003c/code\u003e\u003c/a\u003e Add explicit IVFPQ scanner distance modes (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5632\"\u003e#5632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/3bb48643ab8ea9e50162b354d2463270acd6ed9c\"\u003e\u003ccode\u003e3bb4864\u003c/code\u003e\u003c/a\u003e Pin faiss-gpu-cuvs RAPIDS deps to the 26.06 build series (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5643\"\u003e#5643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/7c3b55c01b8418dc044881625a260fceae9c712b\"\u003e\u003ccode\u003e7c3b55c\u003c/code\u003e\u003c/a\u003e Make Panorama bounds checks overflow-safe (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5616\"\u003e#5616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/fb2d57a3121c073828d2ed7d04ccf09d8bea771c\"\u003e\u003ccode\u003efb2d57a\u003c/code\u003e\u003c/a\u003e Fix leak and unbounded lists[] in OnDisk invlist deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5560\"\u003e#5560\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/a74867cf56a73234ad5d957e40c35c9616d4d273\"\u003e\u003ccode\u003ea74867c\u003c/code\u003e\u003c/a\u003e faiss HNSW: delete the flag and the lock-based graph build (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5611\"\u003e#5611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/4fdbc9dc18adbfef3cd410a2446aa4c757320a8a\"\u003e\u003ccode\u003e4fdbc9d\u003c/code\u003e\u003c/a\u003e Support ZeroCopyIOReader for IndexRaBitQ deserialization (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5629\"\u003e#5629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/b5a14632a6f2bfdc824c86d683b9d6e9205c2604\"\u003e\u003ccode\u003eb5a1463\u003c/code\u003e\u003c/a\u003e Run the eight SIMD kernel tests that no build executed (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5620\"\u003e#5620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookresearch/faiss/commit/6bbb068ad8dab612b84304400846da1b14539085\"\u003e\u003ccode\u003e6bbb068\u003c/code\u003e\u003c/a\u003e Measure 20-byte Hamming codes eight at a time (\u003ca href=\"https://redirect.github.com/facebookresearch/faiss/issues/5587\"\u003e#5587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebookresearch/faiss/compare/v1.15.0...v1.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastembed` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/qdrant/fastembed/releases\"\u003efastembed's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - \u003ccode\u003etoken_count()\u003c/code\u003e loads only the tokenizer, not the ONNX model, when \u003ccode\u003elazy_load=True\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e - add \u003ccode\u003elightonai/LateOn\u003c/code\u003e and the multilingual \u003ccode\u003elightonai/mLateOn\u003c/code\u003e by \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/655\"\u003e#655\u003c/a\u003e - add \u003ccode\u003estemmer\u003c/code\u003e and \u003ccode\u003estopwords\u003c/code\u003e parameters to \u003ccode\u003eQdrant/bm25\u003c/code\u003e for languages without a Snowball stemmer, such as Polish by \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/702\"\u003e#702\u003c/a\u003e - add \u003ccode\u003eibm-granite/granite-embedding-small-english-r2\u003c/code\u003e by \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/743\"\u003e#743\u003c/a\u003e - add \u003ccode\u003eBAAI/bge-reranker-v2-m3\u003c/code\u003e and its int8 version \u003ccode\u003eBAAI/bge-reranker-v2-m3-int8\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/747\"\u003e#747\u003c/a\u003e - speed up MUVERA document encoding for large \u003ccode\u003ek_sim\u003c/code\u003e values by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/751\"\u003e#751\u003c/a\u003e - add \u003ccode\u003eQdrant/stella-en-400M-v5-doc-onnx\u003c/code\u003e for documents and the small query encoders \u003ccode\u003eQdrant/constella-zero\u003c/code\u003e and \u003ccode\u003eQdrant/constella-nano\u003c/code\u003e that search its embeddings by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/756\"\u003e#756\u003c/a\u003e - add \u003ccode\u003eoutput_name\u003c/code\u003e to \u003ccode\u003eTextEmbedding.add_custom_model()\u003c/code\u003e to choose which ONNX output a custom model uses by \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes 🔧\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/640\"\u003e#640\u003c/a\u003e - fix BM42 and miniCOIL failing, and ColBERT keeping punctuation vectors, with \u003ccode\u003elazy_load=True\u003c/code\u003e and \u003ccode\u003eparallel\u003c/code\u003e by \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/642\"\u003e#642\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/726\"\u003e#726\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/727\"\u003e#727\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/728\"\u003e#728\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/729\"\u003e#729\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/730\"\u003e#730\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/732\"\u003e#732\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e - make model downloads more reliable: re-download corrupted cached files, retry on more network errors, time out on an unresponsive Hugging Face endpoint, and download built-in models from Hugging Face only (see Upgrade Notes) by \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/670\"\u003e#670\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/734\"\u003e#734\u003c/a\u003e - fix a hang when a \u003ccode\u003eparallel\u003c/code\u003e run is stopped early, for example with \u003ccode\u003ebreak\u003c/code\u003e by \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/721\"\u003e#721\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e for a \u003ccode\u003ebatch_size\u003c/code\u003e below 1 by \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/723\"\u003e#723\u003c/a\u003e - fix the licenses listed for \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e (\u003ccode\u003egemma\u003c/code\u003e) and the Unicom models (\u003ccode\u003emit\u003c/code\u003e) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/725\"\u003e#725\u003c/a\u003e - accept nearest-neighbor interpolation in Jina CLIP image preprocessing by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/731\"\u003e#731\u003c/a\u003e - match Jina's center crop in \u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e preprocessing, which was off by 1 px for some image sizes by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/733\"\u003e#733\u003c/a\u003e - raise a \u003ccode\u003eValueError\u003c/code\u003e when MUVERA encodes an empty multivector by \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/746\"\u003e#746\u003c/a\u003e - fix center crop returning undersized images when it pads by an odd number of pixels by \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/754\"\u003e#754\u003c/a\u003e - return \u003ccode\u003efloat32\u003c/code\u003e instead of \u003ccode\u003efloat64\u003c/code\u003e embeddings from mean-pooling text models, such as \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e (regression in 0.6.1) by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/757\"\u003e#757\u003c/a\u003e - fix loading models with \u003ccode\u003e.onnx_data\u003c/code\u003e weights from a \u003ccode\u003ehuggingface_hub\u0026gt;=1.32\u003c/code\u003e cache with \u003ccode\u003eonnxruntime\u0026gt;=1.24\u003c/code\u003e by \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/760\"\u003e#760\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/761\"\u003e#761\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/784\"\u003e#784\u003c/a\u003e - fix \u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e image embeddings in batches that mix aspect ratios, for portrait images, and for very thin images, and speed up its text queries (see Upgrade Notes) by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/768\"\u003e#768\u003c/a\u003e - return \u003ccode\u003eint64\u003c/code\u003e indices from \u003ccode\u003eSparseEmbedding.from_dict({})\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/769\"\u003e#769\u003c/a\u003e - fix a token ID overflow in \u003ccode\u003eQdrant/bm25\u003c/code\u003e query embeddings by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/770\"\u003e#770\u003c/a\u003e - respect \u003ccode\u003ecuda=False\u003c/code\u003e in \u003ccode\u003eparallel\u003c/code\u003e workers, which ran on the GPU when \u003ccode\u003eonnxruntime-gpu\u003c/code\u003e was installed (regression in 0.8.0) by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/771\"\u003e#771\u003c/a\u003e - respect \u003ccode\u003edo_resize=False\u003c/code\u003e in ConvNeXT image preprocessing by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/773\"\u003e#773\u003c/a\u003e - keep very small SPLADE weights by computing them with \u003ccode\u003elog1p\u003c/code\u003e by \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/775\"\u003e#775\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/776\"\u003e#776\u003c/a\u003e - honor the truncation and padding side from the model's tokenizer config by \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuilt-in models now download from Hugging Face only, without the Google Cloud Storage (GCS) fallback some of them had. The GCS buckets stay open, so older versions keep working, and custom models still support both \u003ccode\u003eurl\u003c/code\u003e and \u003ccode\u003ehf\u003c/code\u003e sources. GCS copies cached by older versions still load offline or when Hugging Face is unreachable, with a \u003ccode\u003eFutureWarning\u003c/code\u003e: load the model once online, then delete its \u003ccode\u003efast-\u0026lt;model name\u0026gt;\u003c/code\u003e dir.\u003c/li\u003e\n\u003cli\u003eWe removed a stray 128-token limit from the Hugging Face configs of \u003ccode\u003esentence-transformers/all-MiniLM-L6-v2\u003c/code\u003e and \u003ccode\u003eQdrant/bm42-all-minilm-l6-v2-attentions\u003c/code\u003e (now 256 tokens), and \u003ccode\u003ethenlper/gte-large\u003c/code\u003e and \u003ccode\u003eprithivida/Splade_PP_en_v1\u003c/code\u003e (now 512). This applies to any fastembed version on a fresh download, and embeddings of texts over 128 tokens change. A cached model keeps the old limit until you delete it from the cache.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eQdrant/colmodernvbert\u003c/code\u003e now loads \u003ccode\u003emodel_v2.onnx\u003c/code\u003e and drops padding rows from its embeddings, so offline setups need to download it first. Re-embed images that were embedded in batches with images of other aspect ratios. The model needs \u003ccode\u003eonnxruntime\u0026gt;=1.19\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLateInteractionMultimodalEmbedding.embed_image\u003c/code\u003e now defaults to \u003ccode\u003ebatch_size=2\u003c/code\u003e instead of 16, which also applies to \u003ccode\u003eQdrant/colpali-v1.3-fp16\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejinaai/jina-clip-v1\u003c/code\u003e image embeddings change for some image sizes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to everyone who contributed to this release \u003ca href=\"https://github.com/adityaanikam\"\u003e\u003ccode\u003e@​adityaanikam\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Aryan-SINGH-GIT\"\u003e\u003ccode\u003e@​Aryan-SINGH-GIT\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dmheath1\"\u003e\u003ccode\u003e@​Dmheath1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Dylancouzon\"\u003e\u003ccode\u003e@​Dylancouzon\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/FU-max-boop\"\u003e\u003ccode\u003e@​FU-max-boop\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/HuaTNA\"\u003e\u003ccode\u003e@​HuaTNA\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/hulkbig\"\u003e\u003ccode\u003e@​hulkbig\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/JesusMan0529\"\u003e\u003ccode\u003e@​JesusMan0529\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mirochill\"\u003e\u003ccode\u003e@​Mirochill\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Mohith26\"\u003e\u003ccode\u003e@​Mohith26\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Pothan0\"\u003e\u003ccode\u003e@​Pothan0\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/RAMZI0TO99\"\u003e\u003ccode\u003e@​RAMZI0TO99\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tekumara\"\u003e\u003ccode\u003e@​tekumara\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/tuanzirwar\"\u003e\u003ccode\u003e@​tuanzirwar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/joein\"\u003e\u003ccode\u003e@​joein\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.8.1\u003c/h2\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003eFeatures 🏎️\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/539499b855478bcb6a810ac89a047de24c3b1866\"\u003e\u003ccode\u003e539499b\u003c/code\u003e\u003c/a\u003e bump version to v0.9.0 (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/789\"\u003e#789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b2e7debc696a71f85ad379df050d0b34c683cf23\"\u003e\u003ccode\u003eb2e7deb\u003c/code\u003e\u003c/a\u003e chore: remove redundant comment (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/788\"\u003e#788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/3c267018ebdbf84924e089e3148aeaf477662bca\"\u003e\u003ccode\u003e3c26701\u003c/code\u003e\u003c/a\u003e fix: show progress bars when downloading new or corrupted model files (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/787\"\u003e#787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/db785ee93077fce5da745dca921ff9c40863f18f\"\u003e\u003ccode\u003edb785ee\u003c/code\u003e\u003c/a\u003e fix: ColModernVBERT tile grids, mixed-size image batches and fast text querie...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/c0588acf95250d2497e5f5e83233ef343ea74842\"\u003e\u003ccode\u003ec0588ac\u003c/code\u003e\u003c/a\u003e new: create an issue when weekly ci fails (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/781\"\u003e#781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0abff4d6d8c73003697993d2ca3123b3db5b2da7\"\u003e\u003ccode\u003e0abff4d\u003c/code\u003e\u003c/a\u003e new: check wheel before publishing (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/783\"\u003e#783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/b566dcb9052dff0878d2ee57c695dd2a89a92d52\"\u003e\u003ccode\u003eb566dcb\u003c/code\u003e\u003c/a\u003e fix: don't fail a download when an older revision is cached (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/780\"\u003e#780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/0db8d09e7c569c2e2f508ef04eabe5ca57309c84\"\u003e\u003ccode\u003e0db8d09\u003c/code\u003e\u003c/a\u003e docs: show full supported model names (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/637\"\u003e#637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/02563ea78aa41e59112b1e9c66352c14bd98040a\"\u003e\u003ccode\u003e02563ea\u003c/code\u003e\u003c/a\u003e feat: Add lightonai/LateOn model (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/643\"\u003e#643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/qdrant/fastembed/commit/6b1e1d2ac5783e639138b3529973cdca45902372\"\u003e\u003ccode\u003e6b1e1d2\u003c/code\u003e\u003c/a\u003e new: add weekly ci to test all models (\u003ca href=\"https://redirect.github.com/qdrant/fastembed/issues/767\"\u003e#767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/qdrant/fastembed/compare/v0.8.0...v0.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-cpp-python` from 0.3.19 to 0.3.36\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/abetlen/llama-cpp-python/blob/main/CHANGELOG.md\"\u003ellama-cpp-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.36]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@0c1e57098\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.35]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@4df29be4f\u003c/li\u003e\n\u003cli\u003efix(example): retain recurrent state for server MTP rollback\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@adb55e514\u003c/li\u003e\n\u003cli\u003efix(server): show falsey defaults in CLI help by \u003ca href=\"https://github.com/cupkk\"\u003e\u003ccode\u003e@​cupkk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2355\"\u003e#2355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: release multimodal contexts when closing Llama by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2343\"\u003e#2343\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.34]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3546c794\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.33]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@78d2f5246\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.32]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): support chained NextN heads for server MTP drafting\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@b3fed31b9\u003c/li\u003e\n\u003cli\u003efix: preserve recurrent/hybrid model state when the full prompt is already cached by \u003ca href=\"https://github.com/allthatido\"\u003e\u003ccode\u003e@​allthatido\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2306\"\u003e#2306\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.31]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@f449e0553\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.30]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@e3a74b299\u003c/li\u003e\n\u003cli\u003efeat: add Pyodide wheel support by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2309\"\u003e#2309\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.29]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): use MTMD batch encoding by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2301\"\u003e#2301\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(example): support server video inputs and Gemma text tool calls by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2291\"\u003e#2291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@f05cf4676\u003c/li\u003e\n\u003cli\u003efix(example): support multi-step Responses tool streaming by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2288\"\u003e#2288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(ci): Repair Linux accelerator wheels for manylinux publishing\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.28]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(example): align server MTP support with llama.cpp by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2283\"\u003e#2283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: update llama.cpp to ggml-org/llama.cpp@9e3b928fd\u003c/li\u003e\n\u003cli\u003efeat(example): add OpenAI-compatible embeddings endpoint by \u003ca href=\"https://github.com/abetlen\"\u003e\u003ccode\u003e@​abetlen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2281\"\u003e#2281\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.27]\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/1652066e0af45f2313b339670ef9555e8a54e545\"\u003e\u003ccode\u003e1652066\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.36 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2376\"\u003e#2376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/fcde765f9cf8cbce54c9edb343049b1960859bbc\"\u003e\u003ccode\u003efcde765\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to 0c1e57098 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2375\"\u003e#2375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/ea3b56bdc386d5a6f31120338ffe907211b0907c\"\u003e\u003ccode\u003eea3b56b\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to fb34fc262 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2369\"\u003e#2369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/d73664636c2e3b25ce5949a9b85bba690684cdf3\"\u003e\u003ccode\u003ed736646\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to v0.4.0 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2367\"\u003e#2367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/3691546f1c9e0c1bf93323dff02230bd959cf562\"\u003e\u003ccode\u003e3691546\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.35 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2360\"\u003e#2360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/9dd3950067d513b5487d6cb7b189ccdd71fefa85\"\u003e\u003ccode\u003e9dd3950\u003c/code\u003e\u003c/a\u003e fix(llama): release a vision chat handler's mtmd context on close (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2342\"\u003e#2342\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/d8a4a1e4835b36974154393c44dc852dae357d84\"\u003e\u003ccode\u003ed8a4a1e\u003c/code\u003e\u003c/a\u003e fix(server): show falsey defaults in CLI help (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2355\"\u003e#2355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/03307d8673412e072828abb96dbfb6c37c733ecd\"\u003e\u003ccode\u003e03307d8\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to 4df29be4f (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2359\"\u003e#2359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/987e3df20a8f0f62b8b595191065fd60c3f484d1\"\u003e\u003ccode\u003e987e3df\u003c/code\u003e\u003c/a\u003e fix(example): retain recurrent state for MTP rollback (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2358\"\u003e#2358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/abetlen/llama-cpp-python/commit/8a0810fa04bde084bd3446d126831ae5bd65e373\"\u003e\u003ccode\u003e8a0810f\u003c/code\u003e\u003c/a\u003e feat: update llama.cpp to adb55e514 (\u003ca href=\"https://redirect.github.com/abetlen/llama-cpp-python/issues/2357\"\u003e#2357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/abetlen/llama-cpp-python/compare/v0.3.19...v0.3.36\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.18.1 to 6.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.20.0, 2026-10-09\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit work per stream (filter count, accumulated decoding work) (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4173\"\u003e#4173\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for BrotliDecode filter (PDF 2.0) (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4168\"\u003e#4168\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eParse an embedded CFF font program once per stream (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4164\"\u003e#4164\u003c/a\u003e) by \u003ca href=\"https://github.com/marshalltech81\"\u003e\u003ccode\u003e@​marshalltech81\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eParse numbers, indirect references, names and nulls faster (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4148\"\u003e#4148\u003c/a\u003e) by \u003ca href=\"https://github.com/MartinThoma\"\u003e\u003ccode\u003e@​MartinThoma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not inherit PdfObject from a Protocol (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4149\"\u003e#4149\u003c/a\u003e) by \u003ca href=\"https://github.com/MartinThoma\"\u003e\u003ccode\u003e@​MartinThoma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpeed up cloning direct objects (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4152\"\u003e#4152\u003c/a\u003e) by \u003ca href=\"https://github.com/MartinThoma\"\u003e\u003ccode\u003e@​MartinThoma\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReport the correct page number for identical pages (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4154\"\u003e#4154\u003c/a\u003e) by \u003ca href=\"https://github.com/pasmud\"\u003e\u003ccode\u003e@​pasmud\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecrypt the XMP metadata stream unless /EncryptMetadata is false (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4151\"\u003e#4151\u003c/a\u003e) by \u003ca href=\"https://github.com/metsw24-max\"\u003e\u003ccode\u003e@​metsw24-max\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept an ...\n\n_Description has been truncated_","html_url":"https://github.com/CJX0712/worldai-nexus/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CJX0712%2Fworldai-nexus/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"0.53.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-14T18:19:15.000Z","version_change":"0.53.0 → 0.54.0","issue":{"uuid":"5853211104","node_id":"PR_kwDORv5PB88AAAABIdMwIA","number":1661,"state":"closed","title":"Bump the pip-all group with 62 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-10-14T18:49:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T18:19:15.000Z","updated_at":"2026-10-14T18:49:14.000Z","time_to_close":1787,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-all","update_count":62,"packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"torch","old_version":"2.13.0","new_version":"2.14.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"huggingface-hub","old_version":"1.32.0","new_version":"2.2.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"onnxruntime","old_version":"1.30.0","new_version":"1.31.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"nemoguardrails","old_version":"0.24.0","new_version":"0.24.1","repository_url":"https://github.com/NVIDIA-NeMo/Guardrails"},{"name":"langgraph","old_version":"1.2.11","new_version":"1.2.14","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langchain-core","old_version":"1.6.3","new_version":"1.6.9","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"websockets","old_version":"15.0.1","new_version":"17.2","repository_url":"https://github.com/python-websockets/websockets"},{"name":"pgvector","old_version":"0.5.0","new_version":"0.5.1","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"},{"name":"ruff","old_version":"0.16.8","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/python/mypy"},{"name":"deepagents","old_version":"0.6.12","new_version":"0.7.23","repository_url":"https://github.com/langchain-ai/deepagents"},{"name":"langchain","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.6.2","new_version":"1.7.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-anthropic","old_version":"1.7.2","new_version":"1.7.5","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"hatchling","old_version":"1.32.0","new_version":"1.32.4","repository_url":"https://github.com/pypa/hatch"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.50.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"langchain-google-genai","old_version":"4.4.0","new_version":"4.4.1","repository_url":"https://github.com/langchain-ai/langchain-google"},{"name":"langsmith","old_version":"0.13.0","new_version":"0.14.7","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"wcmatch","old_version":"11.0","new_version":"11.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"aiohttp","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"fastembed","old_version":"0.8.1","new_version":"0.9.0","repository_url":"https://github.com/qdrant/fastembed"},{"name":"filelock","old_version":"4.0.10","new_version":"4.1.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"hf-xet","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"jsonpatch","old_version":"1.33","new_version":"1.35","repository_url":"https://github.com/stefankoegl/python-json-patch"},{"name":"jsonpointer","old_version":"3.1.1","new_version":"3.2.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"kubernetes","old_version":"36.0.3","new_version":"37.0.1","repository_url":"https://github.com/kubernetes-client/python"},{"name":"langgraph-sdk","old_version":"0.4.5","new_version":"0.4.6","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"marshmallow","old_version":"3.26.2","new_version":"4.3.1","repository_url":"https://github.com/marshmallow-code/marshmallow"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.9.1","new_version":"7.1.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.26.0","new_version":"2.27.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"opentelemetry-api","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-common","old_version":"0.66b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.66b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.12.0","new_version":"3.13.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pybase64","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/mayeut/pybase64"},{"name":"rpds-py","old_version":"2026.6.3","new_version":"2026.9.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"scipy","old_version":"1.17.1","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"tokenizers","old_version":"0.23.2","new_version":"0.23.3","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"transformers","old_version":"5.18.0","new_version":"5.19.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.27.2","new_version":"0.27.3","repository_url":"https://github.com/fastapi/typer"},{"name":"uuid-utils","old_version":"0.17.1","new_version":"1.0.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"wcwidth","old_version":"0.9.1","new_version":"0.9.2","repository_url":"https://github.com/jquast/wcwidth"},{"name":"pbr","old_version":"7.0.3","new_version":"7.1.3"},{"name":"openai","old_version":"3.24.0","new_version":"3.29.0","repository_url":"https://github.com/openai/openai-python"},{"name":"anthropic","old_version":"1.11.0","new_version":"1.13.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"bracex","old_version":"3.0.1","new_version":"3.1","repository_url":"https://github.com/facelessuser/bracex"},{"name":"google-auth","old_version":"2.59.1","new_version":"2.61.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-genai","old_version":"2.28.0","new_version":"2.29.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-all group with 62 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.13.0` | `2.14.1` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.32.0` | `2.2.0` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.30.0` | `1.31.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [nemoguardrails](https://github.com/NVIDIA-NeMo/Guardrails) | `0.24.0` | `0.24.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.11` | `1.2.14` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.6.3` | `1.6.9` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `17.2` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.5.0` | `0.5.1` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.5` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.8` | `0.17.0` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.4.0` |\n| [deepagents](https://github.com/langchain-ai/deepagents) | `0.6.12` | `0.7.23` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.4.2` | `1.4.4` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.6.2` | `1.7.0` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.7.2` | `1.7.5` |\n| [hatchling](https://github.com/pypa/hatch) | `1.32.0` | `1.32.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.50.0` |\n| [langchain-google-genai](https://github.com/langchain-ai/langchain-google) | `4.4.0` | `4.4.1` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.13.0` | `0.14.7` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `11.0` | `11.1` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.3` | `3.14.5` |\n| [fastembed](https://github.com/qdrant/fastembed) | `0.8.1` | `0.9.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `4.0.10` | `4.1.1` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.6.0` | `1.7.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [jsonpatch](https://github.com/stefankoegl/python-json-patch) | `1.33` | `1.35` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.1.1` | `3.2.1` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `36.0.3` | `37.0.1` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.5` | `0.4.6` |\n| [marshmallow](https://github.com/marshmallow-code/marshmallow) | `3.26.2` | `4.3.1` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.9.1` | `7.1.0` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.26.0` | `2.27.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-common](https://github.com/open-telemetry/opentelemetry-python) | `0.66b0` | `0.66b1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.66b0` | `0.66b1` |\n| [orjson](https://github.com/ijl/orjson) | `3.12.0` | `3.13.0` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.5.0` | `1.5.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.6.3` | `2026.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.17.1` | `1.18.1` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.23.2` | `0.23.3` |\n| [transformers](https://github.com/huggingface/transformers) | `5.18.0` | `5.19.0` |\n| [typer](https://github.com/fastapi/typer) | `0.27.2` | `0.27.3` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.17.1` | `1.0.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.9.1` | `0.9.2` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `7.0.3` | `7.1.3` |\n| [openai](https://github.com/openai/openai-python) | `3.24.0` | `3.29.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `1.11.0` | `1.13.0` |\n| [bracex](https://github.com/facelessuser/bracex) | `3.0.1` | `3.1` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.59.1` | `2.61.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.28.0` | `2.29.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0b2 2026-09-09\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis pre-release adds full support for Python 3.15 specific features, such as support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e, making use of \u003ca href=\"https://docs.python.org/3.15/library/typing.html#typing.TypeForm\"\u003e\u003ccode\u003eTypeForm\u003c/code\u003e\u003c/a\u003e and stabilizing the \u003ca href=\"https://pydantic.dev/docs/validation/latest/concepts/types/#missing-sentinel\"\u003e\u003ccode\u003eMISSING\u003c/code\u003e sentinel\u003c/a\u003e type.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow any \u003ccode\u003eCoreSchema\u003c/code\u003e to be used as serialization by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13680\"\u003e#13680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e type by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13634\"\u003e#13634\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.14.0b2 (2026-09-09)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0b2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fcdefa7198c4fc94a22eecf1a5b7926e20b9fc8a\"\u003e\u003ccode\u003efcdefa7\u003c/code\u003e\u003c/a\u003e Correct v2.14.0 release date (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13952\"\u003e#13952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c821eaccf9873357477a1e7d2d4d12dd4e161c8a\"\u003e\u003ccode\u003ec821eac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Respect config in \u003ccode\u003eTypeAdapter.json_schemas()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13890\"\u003e#13890\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13951\"\u003e#13951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a656b75d58a80f5033f376f7af17092606bbfde2\"\u003e\u003ccode\u003ea656b75\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13948\"\u003e#13948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b4028f9d87e34750e53be0ba011d70f3c0fcc94e\"\u003e\u003ccode\u003eb4028f9\u003c/code\u003e\u003c/a\u003e Avoid validating URL prefix multiple times in multi host URLs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13945\"\u003e#13945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/69ed168e9ad465eef4c8d81efb152a93b604daf5\"\u003e\u003ccode\u003e69ed168\u003c/code\u003e\u003c/a\u003e Reject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13944\"\u003e#13944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/895c0c285c5cb4c0c7c7a4619a80941c12f2c75f\"\u003e\u003ccode\u003e895c0c2\u003c/code\u003e\u003c/a\u003e Fix datetime parsing in custom validator examples (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13931\"\u003e#13931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d2cbaaab74ba4a26bb66f604199ec9793aab6177\"\u003e\u003ccode\u003ed2cbaaa\u003c/code\u003e\u003c/a\u003e Bump virtualenv from 20.36.1 to 21.7.13 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13943\"\u003e#13943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3fbc25ab2bd4f370f478102652f20aea1f5de0b0\"\u003e\u003ccode\u003e3fbc25a\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e dependencies (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13942\"\u003e#13942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/027b5c714791d5f6e86faea4110ef26f4776648c\"\u003e\u003ccode\u003e027b5c7\u003c/code\u003e\u003c/a\u003e Rebuild incomplete types during serialization inference (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13922\"\u003e#13922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2706d1f6cdd0ca5b941fd5170ecf0254f933e1f6\"\u003e\u003ccode\u003e2706d1f\u003c/code\u003e\u003c/a\u003e Handle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13940\"\u003e#13940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `torch` from 2.13.0 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytorch/pytorch/releases\"\u003etorch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyTorch 2.14.1 Release\u003c/h2\u003e\n\u003cp\u003eThis release is meant to fix the following regressions and silent correctness issues:\u003c/p\u003e\n\u003ch2\u003eSilent correctness fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003etorch.linalg.lstsq\u003c/code\u003e solutions on MPS for complex batched underdetermined systems (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/196113\"\u003e#196113\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/196128\"\u003e#196128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-orthogonal \u003ccode\u003eU\u003c/code\u003e and inaccurate small singular values from \u003ccode\u003etorch.linalg.svd\u003c/code\u003e on MPS for rank-deficient and ill-conditioned inputs (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/196112\"\u003e#196112\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/196139\"\u003e#196139\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/199063\"\u003e#199063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the CUDA 13.2 Linux binaries to CUDA 13.2.2 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/196351\"\u003e#196351\u003c/a\u003e). This NVIDIA update resolves two critical issues that could produce incorrect results (\u003ca href=\"https://docs.nvidia.com/cuda/archive/13.2.2/cuda-toolkit-release-notes/index.html#overview\"\u003eCUDA 13.2.2 release notes\u003c/a\u003e):\n\u003cul\u003e\n\u003cli\u003ecuBLAS: \u003ccode\u003ecublasLtMatmul()\u003c/code\u003e could ignore tensor-wide scaling for NVFP4 matrix multiplications (introduced in CUDA 13.2 Update 1)\u003c/li\u003e\n\u003cli\u003eCompiler: failed thread reconvergence could leave stale or corrupted register values in kernels with nested thread divergence (present since CUDA 12.8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRegression fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003etorch.linalg.svd\u003c/code\u003e, \u003ccode\u003etorch.linalg.svdvals\u003c/code\u003e and \u003ccode\u003etorch.linalg.lstsq\u003c/code\u003e failing on MPS with a Metal pipeline-state error for inputs above 8192 elements (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/195937\"\u003e#195937\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/195949\"\u003e#195949\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/195950\"\u003e#195950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix internal assert in \u003ccode\u003etorch.svd(out=)\u003c/code\u003e on MPS for complex inputs (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/195822\"\u003e#195822\u003c/a\u003e), fixed by \u003ca href=\"https://redirect.github.com/pytorch/pytorch/pull/195872\"\u003e#195872\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePyTorch 2.14.0 Release Notes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#highlights\"\u003eHighlights\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#backwards-incompatible-changes\"\u003eBackwards Incompatible Changes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#deprecations\"\u003eDeprecations\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#new-features\"\u003eNew Features\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#improvements\"\u003eImprovements\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#bug-fixes\"\u003eBug fixes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#performance\"\u003ePerformance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#documentation\"\u003eDocumentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#security\"\u003eSecurity\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#developers\"\u003eDevelopers\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eFor more details about these highlighted features, you can look at the release blogpost. Below are the full release notes for this release.\u003c/p\u003e\n\u003ch1\u003eBackwards Incompatible Changes\u003c/h1\u003e\n\u003ch2\u003etorch.nn\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etorch.nn.LinearCrossEntropyOptions\u003c/code\u003e no longer accepts \u003ccode\u003eacc_policy=\u0026quot;balanced\u0026quot;\u003c/code\u003e; use \u003ccode\u003e\u0026quot;compact\u0026quot;\u003c/code\u003e instead (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/188283\"\u003e#188283\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003e\u0026quot;balanced\u0026quot;\u003c/code\u003e policy was removed because \u003ccode\u003e\u0026quot;compact\u0026quot;\u003c/code\u003e provides the same weight-gradient accumulation precision with lower memory use on CUDA, already uses the equivalent scratch layout for mixed-precision inputs on other devices, and was never selected by \u003ccode\u003e\u0026quot;auto\u0026quot;\u003c/code\u003e. Constructing the options with \u003ccode\u003eacc_policy=\u0026quot;balanced\u0026quot;\u003c/code\u003e now raises \u003ccode\u003eValueError: invalid acc_policy: 'balanced'; expected one of 'auto', 'accurate', 'compact'\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/5c4886908584029761b579af026dcfb627c84070\"\u003e\u003ccode\u003e5c48869\u003c/code\u003e\u003c/a\u003e [MPS] Fix Jacobi SVD convergence for small columns (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/199086\"\u003e#199086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/35223a275e49a6154269e19ac34b7fdd9709d031\"\u003e\u003ccode\u003e35223a2\u003c/code\u003e\u003c/a\u003e [release/2.14] Run the release runner-group reconcile in pytorch/pytorch (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/19\"\u003e#19\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/41ffbc4a994e058af9fe00ed5caba73fc1033359\"\u003e\u003ccode\u003e41ffbc4\u003c/code\u003e\u003c/a\u003e [release-only] Update version to 2.14.1 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/198661\"\u003e#198661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/e8f0c016eefa7870720d625f4e71bb6265d6c5c0\"\u003e\u003ccode\u003ee8f0c01\u003c/code\u003e\u003c/a\u003e [release/2.14] [CD] Update to CUDA 13.2.2 for Linux binaries (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/198644\"\u003e#198644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/911665dcb02655bac5948e5ced8d8232372d9941\"\u003e\u003ccode\u003e911665d\u003c/code\u003e\u003c/a\u003e [MPS] Cherry-pick native SVD fixes into release/2.14 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/198394\"\u003e#198394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/2b3ec34829036a65cd9d1398ea72a0167dc37470\"\u003e\u003ccode\u003e2b3ec34\u003c/code\u003e\u003c/a\u003e [release/2.14] Import SDPAParams in test_transformers to fix lint (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194970\"\u003e#194970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/08187d9e0fba026dc8217405802ab5381dc88d90\"\u003e\u003ccode\u003e08187d9\u003c/code\u003e\u003c/a\u003e [cuDNN] Add guards for cuDNN SDPA decode (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194963\"\u003e#194963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/8ceea97051dec8f6bee23d24bd7704dcb6843ade\"\u003e\u003ccode\u003e8ceea97\u003c/code\u003e\u003c/a\u003e Pin cython \u0026lt; 3.3.0 for the Windows Triton wheel build (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194931\"\u003e#194931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/99ecebc63014f3454331b5a0914871daa063b512\"\u003e\u003ccode\u003e99ecebc\u003c/code\u003e\u003c/a\u003e [Cherry-pick][release/2.14] [inductor] Fix loop-local load CSE lifetime (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194\"\u003e#194\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/ec283a75077fa3ee24a9cda2c58d2b24d95ca98c\"\u003e\u003ccode\u003eec283a7\u003c/code\u003e\u003c/a\u003e Bump the Python 3.15 numpy pin to 2.5.2 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/194821\"\u003e#194821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytorch/pytorch/compare/v2.13.0...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `huggingface-hub` from 1.32.0 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/huggingface_hub/releases\"\u003ehuggingface-hub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v2.2.0] \u003ccode\u003ehf jobs stats\u003c/code\u003e snapshots, download and \u003ccode\u003eHfFileSystem\u003c/code\u003e fixes\u003c/h2\u003e\n\u003cp\u003eA small release this week, mostly bug fixes and quality-of-life improvements. \u003ccode\u003ehf jobs stats\u003c/code\u003e now returns right away instead of streaming forever, concurrent downloads reliably use \u003ccode\u003ehf_xet\u003c/code\u003e, and \u003ccode\u003eHfFileSystem\u003c/code\u003e caching is more predictable. Two behavior changes are listed under \u003ca href=\"https://github.com/huggingface/huggingface_hub/blob/HEAD/#-breaking-changes\"\u003eBreaking changes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e📊 \u003ccode\u003ehf jobs stats\u003c/code\u003e prints a snapshot by default\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehf jobs stats\u003c/code\u003e used to stream metrics until the job finished, so scripts and agents calling it on a running job hung until their own timeout. It now prints the latest sample of each job once and exits, like \u003ccode\u003ehf jobs logs\u003c/code\u003e and \u003ccode\u003ehf spaces logs\u003c/code\u003e. Use \u003ccode\u003e-f/--follow\u003c/code\u003e for the previous live view. Snapshot output also supports \u003ccode\u003e--format json|agent|quiet\u003c/code\u003e, which outputs the raw API metrics.\u003c/p\u003e\n\u003cp\u003eOn the Python side, \u003ccode\u003eHfApi.fetch_job_metrics\u003c/code\u003e gets the same \u003ccode\u003efollow\u003c/code\u003e parameter as \u003ccode\u003efetch_job_logs\u003c/code\u003e. It defaults to \u003ccode\u003eFalse\u003c/code\u003e and returns only the current sample. Pass \u003ccode\u003efollow=True\u003c/code\u003e to stream until the job completes.\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e\u0026gt;\u0026gt;\u0026gt; hf jobs stats 6ac3bd9afbc85ba6823a9ad4\r\nJOB ID                CPU % NUM CPU MEM % MEM USAGE      NET I/O         GPU UTIL % GPU MEM % GPU MEM USAGE\r\n--------------------- ----- ------- ----- -------------- --------------- ---------- --------- -------------\r\n6ac3bd9afbc85ba682... 0%    2.0     0.01% 1.0MB / 16.0GB 0.0bps / 0.0bps N/A        N/A       N/A\r\nHint: Use `hf jobs stats -f celinah/6ac3bd9afbc85ba6823a9ad4` to follow live stats.\r\n\u003ch1\u003eStream live stats until the job completes\u003c/h1\u003e\n\u003cp\u003e\u0026gt;\u0026gt;\u0026gt; hf jobs stats -f 6ac3bd9afbc85ba6823a9ad4\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e\u0026gt;\u0026gt;\u0026gt; from huggingface_hub import fetch_job_metrics\r\n\u0026gt;\u0026gt;\u0026gt; for metrics in fetch_job_metrics(job_id=job.id, follow=True):\r\n...     print(metrics)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOther Jobs fixes in this release: \u003ccode\u003ehf jobs logs\u003c/code\u003e and \u003ccode\u003ehf spaces logs\u003c/code\u003e without \u003ccode\u003e-f\u003c/code\u003e no longer hang while the job keeps printing, \u003ccode\u003ehf jobs stats\u003c/code\u003e no longer fails when one of the requested jobs has finished, and \u003ccode\u003ehf jobs stats --json\u003c/code\u003e prints \u003ccode\u003e[]\u003c/code\u003e when no job is running.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e[CLI] Snapshot by default in hf jobs stats, add -f/--follow by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5090\"\u003e#5090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[CLI] Fix empty hf jobs stats --json output with no running jobs by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5094\"\u003e#5094\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Jobs] Fix no-follow logs hanging while the job keeps printing by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5092\"\u003e#5092\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Jobs] Ignore 406 from metrics endpoint for finished jobs by \u003ca href=\"https://github.com/hanouticelina\"\u003e\u003ccode\u003e@​hanouticelina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5091\"\u003e#5091\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e📚 \u003cstrong\u003eDocumentation:\u003c/strong\u003e \u003ca href=\"https://huggingface.co/docs/huggingface_hub/main/en/guides/jobs\"\u003eJobs guide\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e⚡ Concurrent downloads always use \u003ccode\u003ehf_xet\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003eIn a fresh process, the first concurrent \u003ccode\u003ehf_hub_download\u003c/code\u003e calls could read a placeholder version for \u003ccode\u003ehf_xet\u003c/code\u003e while another thread was still looking it up. Those calls treated \u003ccode\u003ehf_xet\u003c/code\u003e as missing and downloaded through the plain HTTP path. This mostly affected parallel downloads such as \u003ccode\u003esnapshot_download\u003c/code\u003e, where some of the files skipped Xet. The version lookup is now cached only once it is resolved, so every download sees the real value.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003e_get_version\u003c/code\u003e that makes concurrent downloads skip hf_xet by \u003ca href=\"https://github.com/BramVanroy\"\u003e\u003ccode\u003e@​BramVanroy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5102\"\u003e#5102\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📂 \u003ccode\u003eHfFileSystem\u003c/code\u003e cache fixes\u003c/h2\u003e\n\u003cp\u003eThree fixes to how \u003ccode\u003eHfFileSystem\u003c/code\u003e caches listings and missing paths:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003els()\u003c/code\u003e on a newly created empty bucket returns an empty list instead of raising \u003ccode\u003eFileNotFoundError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eDirectory listings are now replaced in the cache instead of appended to. Before, \u003ccode\u003els()\u003c/code\u003e after \u003ccode\u003efind()\u003c/code\u003e or \u003ccode\u003els(refresh=True)\u003c/code\u003e could return duplicate entries, \u003ccode\u003erefresh=True\u003c/code\u003e kept deleted files, and listing a single bucket file cached it as the whole folder's listing.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eexists(path, refresh=True)\u003c/code\u003e and \u003ccode\u003einvalidate_cache(path)\u003c/code\u003e now clear cached \u0026quot;not found\u0026quot; results. Before, a repo, branch or bucket created in the same process stayed missing until a full \u003ccode\u003einvalidate_cache()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/acfdf30d99441317270cca6e9362dd7f9ff47c55\"\u003e\u003ccode\u003eacfdf30\u003c/code\u003e\u003c/a\u003e Release: v2.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/193d9d921f9c7a4b57cb664d89108bf50dcf06c6\"\u003e\u003ccode\u003e193d9d9\u003c/code\u003e\u003c/a\u003e Release: v2.2.0.rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/5be356510bbd151bc8310d9da989501cbe004779\"\u003e\u003ccode\u003e5be3565\u003c/code\u003e\u003c/a\u003e [Cache] Speed up delete_revisions with a set lookup (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5118\"\u003e#5118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/dab6a964b1e522f50e6bd1dd6a0056b8bb8de5cc\"\u003e\u003ccode\u003edab6a96\u003c/code\u003e\u003c/a\u003e [CLI] Don't glob-expand arguments on Windows (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/cca4d3a3bfe057911211a4857d5776d075a3bf6a\"\u003e\u003ccode\u003ecca4d3a\u003c/code\u003e\u003c/a\u003e [Download] Fix offline snapshot_download with a pinned revision (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5113\"\u003e#5113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/c6cc03e179191985b52e1f0956766d944b46a10b\"\u003e\u003ccode\u003ec6cc03e\u003c/code\u003e\u003c/a\u003e Fix argument name in raise_text_generation_error docstring (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5108\"\u003e#5108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/8abbfe56999a650d84e35204c0f4f71d16087bb8\"\u003e\u003ccode\u003e8abbfe5\u003c/code\u003e\u003c/a\u003e Fix race in \u003ccode\u003e_get_version\u003c/code\u003e that makes concurrent downloads skip hf_xet (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5102\"\u003e#5102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/bb3a875b13b131d06a10325b2f07d6de4776966f\"\u003e\u003ccode\u003ebb3a875\u003c/code\u003e\u003c/a\u003e [Docs] Fix from_pretrained integration example (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5105\"\u003e#5105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/cf992a93d6b7481158eac47469be763dcd8d58f0\"\u003e\u003ccode\u003ecf992a9\u003c/code\u003e\u003c/a\u003e [HfFileSystem] Make refresh=True clear cached not-found results (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/huggingface_hub/commit/af741671a6e49296b22f1b827298b3c688769a48\"\u003e\u003ccode\u003eaf74167\u003c/code\u003e\u003c/a\u003e [Tests] Wait for bucket listings after writes (\u003ca href=\"https://redirect.github.com/huggingface/huggingface_hub/issues/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/huggingface_hub/compare/v1.32.0...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `onnxruntime` from 1.30.0 to 1.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/onnxruntime/releases\"\u003eonnxruntime's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eONNX Runtime v1.31.0\u003c/h2\u003e\n\u003cp\u003eONNX Runtime 1.31.0 stabilizes model-package and EPContext data APIs, improves CPU model loading and quantized MoE inference, expands device-based execution-provider selection, and strengthens model-loading and runtime reliability. These notes cover changes since ONNX Runtime 1.30.0. CUDA and WebGPU kernel updates are summarized here; detailed provider notes are covered by their separate plugin EP releases.\u003c/p\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePromoted the model-package API and EPContext data callbacks to stable C and C++ APIs, with EPContext callback support added across language bindings (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33166\"\u003e#33166\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32265\"\u003e#32265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eReduced CPU session-initialization overhead by parallelizing eligible weight prepacking, and accelerated block-wise INT4/INT8 QMoE experts with MLAS QNBit kernels and grouped expert dispatch (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31691\"\u003e#31691\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32644\"\u003e#32644\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32668\"\u003e#32668\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded x86 FP16 LayerNorm/RMSNorm acceleration, Arm KleidiAI SVE2.1 FP16 GEMM support, and additional RISC-V vector kernels (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32715\"\u003e#32715\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32670\"\u003e#32670\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32710\"\u003e#32710\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEnabled CoreML participation in device-based EP selection, including Apple Neural Engine selection through \u003ccode\u003ePREFER_NPU\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31975\"\u003e#31975\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded workspace-memory accounting and verification for constrained-memory graph partitioning, alongside broader model, graph, and tensor validation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31962\"\u003e#31962\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32189\"\u003e#32189\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAnnouncements \u0026amp; Compatibility\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/releases/tag/plugin-ep-cuda/v0.3.0\"\u003eCUDA Plugin EP v0.3.0\u003c/a\u003e and WebGPU Plugin EP v0.5.0 are matched with ONNX Runtime 1.31.0. For \u003cstrong\u003econtrib-op compatibility\u003c/strong\u003e, core and the plugin must use the same contributed-operator schemas; building both from the \u003cstrong\u003esame ONNX Runtime revision\u003c/strong\u003e is recommended. Schema mismatches can cause incorrect execution or crashes and may not be detected during plugin registration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eGatherBlockQuantized\u003c/code\u003e behavior change:\u003c/strong\u003e out-of-range indices now produce zero output slices across CPU, CUDA, and WebGPU for both integer and floating-point quantized formats. This deliberately differs from ONNX \u003ccode\u003eGather\u003c/code\u003e error semantics (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32480\"\u003e#32480\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExperimental API migration:\u003c/strong\u003e model-package consumers should use \u003ccode\u003eOrtApi::GetModelPackageApi\u003c/code\u003e and the stable \u003ccode\u003eOrtModelPackageApi\u003c/code\u003e table. EPContext callback registration now uses stable APIs; the corresponding experimental lookup entries were removed. The stable native callback contract carries callback/state pointers, with payload limits enforced by application callbacks, bindings, or EPs rather than a native read-options policy (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33166\"\u003e#33166\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32265\"\u003e#32265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eACL EP is deprecated\u003c/strong\u003e and will be removed in a future release. Source builds using \u003ccode\u003e--use_acl\u003c/code\u003e now receive a deprecation warning (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32564\"\u003e#32564\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eThe ONNX dependency remains at \u003cstrong\u003e1.22.0\u003c/strong\u003e. The initial ONNX 1.23 integration was reverted pending upstream fixes; this release does not ship that integration's new opset or FLOAT6 support (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33073\"\u003e#33073\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupported native builds now default to \u003cstrong\u003e1DS telemetry\u003c/strong\u003e. Windows TraceLogging remains selectable with \u003ccode\u003e--use_windows_telemetry\u003c/code\u003e or \u003ccode\u003eonnxruntime_USE_WINDOWS_TELEMETRY=ON\u003c/code\u003e; telemetry can be disabled with \u003ccode\u003e--no_telemetry\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32384\"\u003e#32384\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003ch3\u003eCore APIs \u0026amp; Runtime\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStabilized the model-package C and C++ APIs for loading packages, selecting compatible model variants, and creating sessions (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33166\"\u003e#33166\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStabilized named EPContext data read/write callbacks for application-managed storage. Added EP support negotiation so registered callbacks do not silently fall back to filesystem I/O (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32265\"\u003e#32265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExtended the Compile API to write external initializers and EP context data to buffers, enabling in-memory compilation workflows for models larger than 2 GB (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31347\"\u003e#31347\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded workspace-memory accounting, source reporting, and post-partition reservation verification. Set \u003ccode\u003esession.strict_workspace_verification=1\u003c/code\u003e to fail initialization on workspace declaration overruns or nonzero orphaned reservations; strict verification is not supported for ORT-format model loads (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31962\"\u003e#31962\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32189\"\u003e#32189\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded the opt-in source-build option \u003ccode\u003eonnxruntime_DISABLE_DEVICE_DISCOVERY=ON\u003c/code\u003e to skip platform accelerator probing and report only the CPU device (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32592\"\u003e#32592\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eShared Contrib Operators\u003c/h3\u003e\n\u003cp\u003eThese updates affect core operator schemas and cross-provider behavior, not only the separately released GPU plugins.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eExtended \u003ccode\u003eEngramGate\u003c/code\u003e and \u003ccode\u003eNGramHashMapping\u003c/code\u003e for Qwen4-Exp, and added \u003ccode\u003eVarlenNGramHashMapping\u003c/code\u003e for packed DeepSeek Engram batching with request-local history. Packed hashing also supports Qwen4-Exp head offsets, EOS resets, and segment boundaries (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32285\"\u003e#32285\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32358\"\u003e#32358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32467\"\u003e#32467\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eactivation\u003c/code\u003e attribute to \u003ccode\u003eGatedRMSNorm\u003c/code\u003e for SiLU, its Swish alias, and Sigmoid gating across CPU, CUDA, and WebGPU. SiLU remains the default (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32512\"\u003e#32512\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded weightless hyper-connection operators \u003ccode\u003eBranchwiseRMSNorm\u003c/code\u003e, \u003ccode\u003eScaledSiLU\u003c/code\u003e, \u003ccode\u003eHyperConnectionPreMix\u003c/code\u003e, and \u003ccode\u003eHyperConnectionPostMix\u003c/code\u003e, with CPU, CUDA, and WebGPU implementations (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32687\"\u003e#32687\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExtended \u003ccode\u003eGatherBlockQuantized\u003c/code\u003e to FP8/FP4 data, full-axis blocks, and scale broadcasting, and improved CPU UINT8 dequantization. See the out-of-range-index behavior change above (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32480\"\u003e#32480\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32621\"\u003e#32621\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePlugin Execution Provider Infrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for statically linked plugin EPs, with a static WebGPU plugin build configuration (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32395\"\u003e#32395\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePreserved caller streams in single-tensor plugin data transfers and handled null plugin allocator returns (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32666\"\u003e#32666\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32683\"\u003e#32683\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeduplicated AutoEP custom-op domains and corrected EP assignment reporting after NHWC layout transformation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32711\"\u003e#32711\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/33184\"\u003e#33184\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded reference guidance for compiled-model compatibility validation, including multi-device scenarios (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29168\"\u003e#29168\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eExecution Provider Updates\u003c/h2\u003e\n\u003ch3\u003eCUDA EP\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/402979ac1bef89dcd55add41eaa7277c407599eb\"\u003e\u003ccode\u003e402979a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Bump version to 1.32.0 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33197\"\u003e#33197\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/660125b35916c134c00bc746c34503321e17150f\"\u003e\u003ccode\u003e660125b\u003c/code\u003e\u003c/a\u003e [Compile API] Add support for writing external initializers and EP context to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/06cab16f5727506b6013ff7f77264e7ba5607651\"\u003e\u003ccode\u003e06cab16\u003c/code\u003e\u003c/a\u003e Update parameterized requirement from \u0026gt;=0.8.1 to \u0026gt;=0.9.0 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33022\"\u003e#33022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/864d87126864c64651f58a9b51d9006ad71b2c78\"\u003e\u003ccode\u003e864d871\u003c/code\u003e\u003c/a\u003e Fix isolated provider tests in Windows GPU CI (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33203\"\u003e#33203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/174470241c9c62da79f34c80ab56826c0844ae7f\"\u003e\u003ccode\u003e1744702\u003c/code\u003e\u003c/a\u003e Bump baseline-browser-mapping from 2.10.31 to 2.11.26 in /js/react_native/e2e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/be3b8e8864f295f95c9a8d4092bd4b6fa2e9de8e\"\u003e\u003ccode\u003ebe3b8e8\u003c/code\u003e\u003c/a\u003e Fix complex STFT window handling (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33136\"\u003e#33136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/40a7167d5f7c4de069ea898189db6c53975ea094\"\u003e\u003ccode\u003e40a7167\u003c/code\u003e\u003c/a\u003e [CPU] Avoid degenerate GQA FlashAttention tiles when L2 cache size is unknown...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/430f563dec9c7c15db5b0e867f542bf41f2cc11f\"\u003e\u003ccode\u003e430f563\u003c/code\u003e\u003c/a\u003e Fix EP assignment reporting after NHWC layout transformation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33184\"\u003e#33184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/26ab6c7951314bbfe82d80e36cd6ad49725fc2de\"\u003e\u003ccode\u003e26ab6c7\u003c/code\u003e\u003c/a\u003e Improve GQA shared-cache and sliding-window handling (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33175\"\u003e#33175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/d8024cdcd35022b184504ad55d019bb69443ec1d\"\u003e\u003ccode\u003ed8024cd\u003c/code\u003e\u003c/a\u003e Improve CUDA RMSNorm reduction and aligned half2 output (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/33178\"\u003e#33178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/onnxruntime/compare/v1.30.0...v1.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `starlette` from 1.6.0 to 1.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.7.0\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental OpenTelemetry tracing, HTTP \u003ccode\u003eQUERY\u003c/code\u003e support, and response trailers in \u003ccode\u003eTestClient\u003c/code\u003e. Starlette now requires AnyIO 4.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\n\u003ccode\u003eOpenTelemetryMiddleware\u003c/code\u003e is experimental. Its API and emitted telemetry may change in minor releases without a deprecation period.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eOpenTelemetryMiddleware\u003c/code\u003e for HTTP server spans, with URL exclusions and custom tracer providers \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3438\"\u003e#3438\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3463\"\u003e#3463\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3520\"\u003e#3520\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExpose the matched route through \u003ccode\u003escope[\u0026quot;route\u0026quot;]\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3438\"\u003e#3438\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport the \u003ccode\u003eQUERY\u003c/code\u003e HTTP method in \u003ccode\u003eHTTPEndpoint\u003c/code\u003e, CORS, and OpenAPI 3.2 schema generation \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3489\"\u003e#3489\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCapture HTTP response trailers in \u003ccode\u003eTestClient\u003c/code\u003e and expose them through \u003ccode\u003eresponse.extensions[\u0026quot;http.response.trailers\u0026quot;]\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3563\"\u003e#3563\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport partitioned cookies in \u003ccode\u003eSessionMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3510\"\u003e#3510\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epartitioned\u003c/code\u003e to \u003ccode\u003eResponse.delete_cookie()\u003c/code\u003e on Python 3.14 and later \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3376\"\u003e#3376\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport IPv6 hosts in \u003ccode\u003eTrustedHostMiddleware\u003c/code\u003e and \u003ccode\u003eTestClient\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3471\"\u003e#3471\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.15 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3508\"\u003e#3508\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire \u003ccode\u003eanyio\u0026gt;=4.0.0,\u0026lt;5\u003c/code\u003e, dropping support for AnyIO 3 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3512\"\u003e#3512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketDisconnected\u003c/code\u003e, a \u003ccode\u003eRuntimeError\u003c/code\u003e subclass, for disconnected WebSocket operations \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/2767\"\u003e#2767\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eCollection[str]\u003c/code\u003e in \u003ccode\u003eCORSMiddleware\u003c/code\u003e configuration annotations, including sets and frozensets \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3518\"\u003e#3518\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRun background tasks only after the response is sent when using \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3476\"\u003e#3476\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eReturn \u003ccode\u003e400\u003c/code\u003e for invalid multipart parser input \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3492\"\u003e#3492\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eVary: Origin\u003c/code\u003e on all normal CORS responses and vary preflight responses by all request headers that affect them \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3516\"\u003e#3516\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3517\"\u003e#3517\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eHandle malformed \u003ccode\u003eHost\u003c/code\u003e headers and IPv6 authorities consistently across URL co...\n\n_Description has been truncated_","html_url":"https://github.com/cgfixit/CyClaw/pull/1661","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgfixit%2FCyClaw/issues/1661","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1661/packages"}},{"old_version":"0.42.0","new_version":"0.54.0","update_type":"minor","path":"/be","pr_created_at":"2026-10-14T05:51:35.000Z","version_change":"0.42.0 → 0.54.0","issue":{"uuid":"5842697795","node_id":"PR_kwDOS1k_dM8AAAABIUvRTA","number":445,"state":"closed","title":"chore(deps): bump the backend group in /be with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-14T16:57:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-14T05:51:35.000Z","updated_at":"2026-10-14T16:57:40.000Z","time_to_close":39954,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend","update_count":15,"packages":[{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"fastapi","old_version":"0.135.1","new_version":"0.142.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"resend","old_version":"2.25.0","new_version":"2.49.1","repository_url":"https://github.com/resendlabs/resend-python"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.1.3","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"uuid-utils","old_version":"0.17.0","new_version":"0.17.1","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.54.0"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"ruff","old_version":"0.15.7","new_version":"0.16.10","repository_url":"https://github.com/astral-sh/ruff"}],"path":"/be","ecosystem":"pip"},"body":"Bumps the backend group in /be with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.1` | `0.142.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [resend](https://github.com/resendlabs/resend-python) | `2.25.0` | `2.49.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.1.3` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.17.0` | `0.17.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.42.0` | `0.54.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.16.10` |\n\nUpdates `alembic` from 1.18.4 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026quot;recreate\u0026quot; operation.  An unnamed\nCHECK constraint can't be reliably carried over in a batch recreate\nas it may refer to columns that are being dropped or changed.  This\nomission was previously a silent operation.   The presence of any\n\u003ccode\u003e~sqlalchemy.schema.CheckConstraint\u003c/code\u003e in\n\u003ccode\u003eOperations.batch_alter_table.table_args\u003c/code\u003e is taken to indicate\nthat the case has been accommodated, and no warning is emitted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1846\"\u003e#1846\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Autogenerate now renders a warning comment above any rendered\n\u003ccode\u003eOperations.drop_constraint()\u003c/code\u003e directive for which the constraint name\nis \u003ccode\u003eNone\u003c/code\u003e, as is the case when a constraint that has no name in the model\nis dropped, most typically within the \u003ccode\u003edowngrade()\u003c/code\u003e function of a\nmigration that adds an unnamed constraint.  A warning is also emitted on\nthe console when the migration script is generated.   The directive\nrequires a non-None name in order to be able to emit a \u0026quot;DROP CONSTRAINT\u0026quot;\ncommand.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/916\"\u003e#916\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where adding a column with a type that generates\nits own CHECK constraint, such as \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or\n\u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e with\n\u003ccode\u003e~sqlalchemy.types.Boolean.create_constraint\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e,\nwould emit the constraint twice when the table was recreated, once under\nthe name generated by the naming convention in use and once under the\nname given to the type.  The constraint is now emitted once, using the\nsame name that would be used outside of batch mode.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1768\"\u003e#1768\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where a CHECK constraint generated by a type such\nas \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or \u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e\nwould lose the name established for it by the naming convention in use\nwhen the table was recreated, as the constraint was regenerated against\nthe temporary table used for the recreate operation.  The naming\nconvention is now resolved against the name of the table being replaced.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.135.1 to 0.142.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.142.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Allow startup when automatic OpenTelemetry configuration fails. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16418\"\u003e#16418\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix repeated endpoint wrapping in included routers. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16414\"\u003e#16414\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add native OpenTelemetry support. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16403\"\u003e#16403\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📱 Improve mobile responsiveness of conference rail. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16196\"\u003e#16196\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e♻️ Remove conf section and add event banner. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16193\"\u003e#16193\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove unused image. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16195\"\u003e#16195\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🐛 Use buttons for Termynal controls. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16132\"\u003e#16132\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for hi (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16212\"\u003e#16212\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16210\"\u003e#16210\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16211\"\u003e#16211\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16208\"\u003e#16208\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16209\"\u003e#16209\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16207\"\u003e#16207\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16206\"\u003e#16206\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16205\"\u003e#16205\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16204\"\u003e#16204\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16203\"\u003e#16203\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16202\"\u003e#16202\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16201\"\u003e#16201\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16171\"\u003e#16171\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Fix frontend test timeout with Starlette Git. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16408\"\u003e#16408\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Permit.io. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16406\"\u003e#16406\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump anyio from 4.12.1 to 4.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16375\"\u003e#16375\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 15 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16285\"\u003e#16285\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.3.1 to 1.6.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16289\"\u003e#16289\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump annotated-doc from 0.0.4 to 0.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16288\"\u003e#16288\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump typing-inspection from 0.4.2 to 0.4.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16286\"\u003e#16286\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78c4324f0c56bc5282a459978779a9e532d19709\"\u003e\u003ccode\u003e78c4324\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16419\"\u003e#16419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2579ed0d9e73205326463025cc756650f642f511\"\u003e\u003ccode\u003e2579ed0\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d4953d2e528b58cfb09bbc28fb25dcda227c6ea\"\u003e\u003ccode\u003e1d4953d\u003c/code\u003e\u003c/a\u003e 🐛 Allow startup when automatic OpenTelemetry configuration fails (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16418\"\u003e#16418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3e33a03bdaa3a89f27d5e0c390c4ba9032f14b5e\"\u003e\u003ccode\u003e3e33a03\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16415\"\u003e#16415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/12ea7f5a5e76c5ba3495c2803f57ed92ac67731b\"\u003e\u003ccode\u003e12ea7f5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ac88f563db5f4d3300d43355eca728c93ed9ffe2\"\u003e\u003ccode\u003eac88f56\u003c/code\u003e\u003c/a\u003e 🐛 Fix repeated endpoint wrapping in included routers (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16414\"\u003e#16414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd41128123fd08d693f5541e27c550eebe20f8b0\"\u003e\u003ccode\u003ebd41128\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16411\"\u003e#16411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7aa21e53c859ce52b17196b35909efca6f2fa11f\"\u003e\u003ccode\u003e7aa21e5\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4b3949cd9e5932f76217131fceabc74145c3db24\"\u003e\u003ccode\u003e4b3949c\u003c/code\u003e\u003c/a\u003e ✨ Add native OpenTelemetry support (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16403\"\u003e#16403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c30032a1b68fb36c03fffe1856369d3824607c7c\"\u003e\u003ccode\u003ec30032a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.135.1...0.142.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2-binary` from 2.9.11 to 2.9.13\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.13\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.15 (:ticket:\u003ccode\u003e[#1848](https://github.com/psycopg/psycopg2/issues/1848)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix parsing of malformed bytea input.\u003c/li\u003e\n\u003cli\u003eFix parsing of malformed int64 input in arrays (:ticket:\u003ccode\u003e[#1847](https://github.com/psycopg/psycopg2/issues/1847)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003epyproject.toml\u003c/code\u003e file to declare a PEP 517 build backend\n(:ticket:\u003ccode\u003e[#1788](https://github.com/psycopg/psycopg2/issues/1788)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f650e7afed0c94f596594e8328a0c7fa65a9d0e5\"\u003e\u003ccode\u003ef650e7a\u003c/code\u003e\u003c/a\u003e chore: bump to release 2.9.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/368c8a1ca6d80088703a693ce64b68ad7d346698\"\u003e\u003ccode\u003e368c8a1\u003c/code\u003e\u003c/a\u003e chore!: drop support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/9b39e65ab232f0a267a278cdaef1bd9975d88c65\"\u003e\u003ccode\u003e9b39e65\u003c/code\u003e\u003c/a\u003e chore: drop scaleway build support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/2ca70416be6d4d3d8170ec439876c0b3569af718\"\u003e\u003ccode\u003e2ca7041\u003c/code\u003e\u003c/a\u003e fix: fix handling of PostgreSQL 18 exceptions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/5385c027ef62ce14e57a7379e0375868507d6746\"\u003e\u003ccode\u003e5385c02\u003c/code\u003e\u003c/a\u003e Build CPython 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1d32e1f6678ffa8ab8897ca81826bf4dde6354cd\"\u003e\u003ccode\u003e1d32e1f\u003c/code\u003e\u003c/a\u003e ci: only attempt triggering documentation refresh when pushing on main repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/433e7b77a7b700fbb1cdc6e9dca6b5948d07fc23\"\u003e\u003ccode\u003e433e7b7\u003c/code\u003e\u003c/a\u003e chore: add pyproject.toml file to declare a PEP 517 build backend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8fb80bc3b2c358f4e3c54e33a37326d3f8b3ff6a\"\u003e\u003ccode\u003e8fb80bc\u003c/code\u003e\u003c/a\u003e fix: fix parsing of malformed int64 input in arrays\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f98014a46a1e34f024ebd6134d1d87b77490c500\"\u003e\u003ccode\u003ef98014a\u003c/code\u003e\u003c/a\u003e fix: fix parsing of malformed bytea input\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/822b79cfe12ca0a04482acd382cae669a16aa789\"\u003e\u003ccode\u003e822b79c\u003c/code\u003e\u003c/a\u003e chore: bump dependencies in binary package\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 2026-08-28\u003c/h2\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygments` from 2.20.0 to 2.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.21.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\nembedded code blocks (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3133\"\u003e#3133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Recognize \u003ccode\u003e\\[Name]\u003c/code\u003e named-character escapes such as\n\u003ccode\u003e\\[Nu]\u003c/code\u003e instead of emitting an \u003ccode\u003eError\u003c/code\u003e token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.21.0\u003c/h2\u003e\n\u003cp\u003e(released August 17th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/a43b45dcf081b6010c6ab4428f149f7f6d2499c4\"\u003e\u003ccode\u003ea43b45d\u003c/code\u003e\u003c/a\u003e Get ready for the 2.21.0 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d8f14cb395026abb288db38839f57499cba695e0\"\u003e\u003ccode\u003ed8f14cb\u003c/code\u003e\u003c/a\u003e Fix version_added for Purescript.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/19c581704c466cde59fd1a49e04c3424449110f3\"\u003e\u003ccode\u003e19c5817\u003c/code\u003e\u003c/a\u003e Remove superfluous parentheses from PostgresExplainLexer (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9992e0992ad273565f19ffb1b4c9cae96cd8dd00\"\u003e\u003ccode\u003e9992e09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3191\"\u003e#3191\u003c/a\u003e from jvoisin/dupes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bd225771e856b79e8cb5b81533e1eba0cf9fbf85\"\u003e\u003ccode\u003ebd22577\u003c/code\u003e\u003c/a\u003e Fix regexlint warnings after latest update.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6a62df1d1fc77af7e9fc61325ef376297cadffbb\"\u003e\u003ccode\u003e6a62df1\u003c/code\u003e\u003c/a\u003e Release preparation: Update the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/aabba32860b5ba15acabdcba9b436a32e92ce75e\"\u003e\u003ccode\u003eaabba32\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3221\"\u003e#3221\u003c/a\u003e from jvoisin/alter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d3441d00a33467255b8b3ae9862f454e3aa58e3d\"\u003e\u003ccode\u003ed3441d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e from jvoisin/caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c593f3f2f69e09670e58a121437a3c830a643071\"\u003e\u003ccode\u003ec593f3f\u003c/code\u003e\u003c/a\u003e Add a lexer for Caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0644b532c8df1dd67b26471871d432d100252a11\"\u003e\u003ccode\u003e0644b53\u003c/code\u003e\u003c/a\u003e Simplify single-character regex alternations to character classes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.20.0...2.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.15.0 to 2.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.15.1\u003c/h2\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/2.15.1/CHANGELOG.rst\"\u003e2.15.1 changelog\u003c/a\u003e for complete release details.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst\"\u003epyjwt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev2.15.1 \u0026lt;https://github.com/jpadilla/pyjwt/compare/2.15.0...2.15.1\u0026gt;\u003c/code\u003e__\u003c/h2\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Accept trailing Base64URL ``=`` padding when decoding JWS segments, so\n  tokens issued by AWS ALB and similar systems verify instead of raising\n  ``DecodeError: Invalid crypto padding``. Non-alphabet junk such as\n  ``!!!!`` remains rejected (`[#1209](https://github.com/jpadilla/pyjwt/issues/1209) \u0026lt;https://github.com/jpadilla/pyjwt/issues/1209\u0026gt;`__).\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/7d5ef55e42ce42221f58dc49943e92ccad1fa66a\"\u003e\u003ccode\u003e7d5ef55\u003c/code\u003e\u003c/a\u003e chore: prepare 2.15.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/commit/7bf32526738fe837387bdedd4849a4a525c33a79\"\u003e\u003ccode\u003e7bf3252\u003c/code\u003e\u003c/a\u003e Accept canonical Base64URL padding in JWT segments (\u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/issues/1216\"\u003e#1216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.15.0...2.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `resend` from 2.25.0 to 2.49.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/resendlabs/resend-python/releases\"\u003eresend's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.49.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(webhooks): raise ValueError for non-ASCII signature in Webhooks.verify by \u003ca href=\"https://github.com/RaphaelFakhri\"\u003e\u003ccode\u003e@​RaphaelFakhri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/290\"\u003eresend/resend-python#290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RaphaelFakhri\"\u003e\u003ccode\u003e@​RaphaelFakhri\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/290\"\u003eresend/resend-python#290\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.49.0...v2.49.1\"\u003ehttps://github.com/resend/resend-python/compare/v2.49.0...v2.49.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.49.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(webhooks): add support for topic and contact.topics.updated events by \u003ca href=\"https://github.com/joaopcm\"\u003e\u003ccode\u003e@​joaopcm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/291\"\u003eresend/resend-python#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joaopcm\"\u003e\u003ccode\u003e@​joaopcm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/291\"\u003eresend/resend-python#291\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.48.0...v2.49.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.48.0...v2.49.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(usage): add support for the GET /usage endpoint by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/289\"\u003eresend/resend-python#289\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.47.0...v2.48.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.47.0...v2.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(webhooks): add support for suppression.added/removed events by \u003ca href=\"https://github.com/dielduarte\"\u003e\u003ccode\u003e@​dielduarte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/287\"\u003eresend/resend-python#287\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.46.0...v2.47.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.46.0...v2.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: run lint, mypy and tests on Python 3.12 to 3.14 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/285\"\u003eresend/resend-python#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump version to 2.46.0 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/286\"\u003eresend/resend-python#286\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/resend/resend-python/compare/v2.45.1...v2.46.0\"\u003ehttps://github.com/resend/resend-python/compare/v2.45.1...v2.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.45.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: publish releases from GitHub Actions with PyPI trusted publishing by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/281\"\u003eresend/resend-python#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency python to 3.14 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/282\"\u003eresend/resend-python#282\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve SDK errors for invalid JSON byte encodings by \u003ca href=\"https://github.com/Bortlesboat\"\u003e\u003ccode\u003e@​Bortlesboat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/276\"\u003eresend/resend-python#276\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: make Resend API errors picklable by \u003ca href=\"https://github.com/nickita-khylkouski\"\u003e\u003ccode\u003e@​nickita-khylkouski\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/278\"\u003eresend/resend-python#278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump version to 2.45.1 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/283\"\u003eresend/resend-python#283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: unpin flake8 so lint runs on Python 3.14 by \u003ca href=\"https://github.com/felipefreitag\"\u003e\u003ccode\u003e@​felipefreitag\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/resend/resend-python/pull/284\"\u003eresend/resend-python#284\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/4ce466ec3a0048589e695a59ed831011d97dfc25\"\u003e\u003ccode\u003e4ce466e\u003c/code\u003e\u003c/a\u003e fix(webhooks): raise ValueError for non-ASCII signature in Webhooks.verify (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/eac30cabe4fd7bf7b4c978018d5aa3f0590d6079\"\u003e\u003ccode\u003eeac30ca\u003c/code\u003e\u003c/a\u003e feat(webhooks): add support for topic and contact.topics.updated events (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/f6ad2bea554d07400e1a35026c9b66e226be518b\"\u003e\u003ccode\u003ef6ad2be\u003c/code\u003e\u003c/a\u003e feat(usage): add support for the GET /usage endpoint (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/390da5f92f9eb47d58ec230a4e500fab3045233b\"\u003e\u003ccode\u003e390da5f\u003c/code\u003e\u003c/a\u003e feat(webhooks): add support for suppression.added/removed events (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/fbc4223ce5c17bb1ff481c5e53740c45511ebfd2\"\u003e\u003ccode\u003efbc4223\u003c/code\u003e\u003c/a\u003e chore: bump version to 2.46.0 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/c4e18acc5cf0da10f95ab606b76def411885838e\"\u003e\u003ccode\u003ec4e18ac\u003c/code\u003e\u003c/a\u003e ci: run lint, mypy and tests on Python 3.12 to 3.14 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/285\"\u003e#285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/23bc41504a73517c0a35a5908117591dea2067d2\"\u003e\u003ccode\u003e23bc415\u003c/code\u003e\u003c/a\u003e chore: unpin flake8 so lint runs on Python 3.14 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/284\"\u003e#284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/ee3760398f912fa521d700b08d6b6ce210893613\"\u003e\u003ccode\u003eee37603\u003c/code\u003e\u003c/a\u003e chore: bump version to 2.45.1 (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/283\"\u003e#283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/58be6dafcd63a08220b9b294bc2a5bb53a3e983b\"\u003e\u003ccode\u003e58be6da\u003c/code\u003e\u003c/a\u003e fix: make Resend API errors picklable (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/resend/resend-python/commit/f758c75eadceae3a8006b14376c8e957e819706e\"\u003e\u003ccode\u003ef758c75\u003c/code\u003e\u003c/a\u003e fix: preserve SDK errors for invalid JSON byte encodings (\u003ca href=\"https://redirect.github.com/resendlabs/resend-python/issues/276\"\u003e#276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/resendlabs/resend-python/compare/v2.25.0...v2.49.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `slowapi` from 0.1.9 to 0.1.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/laurents/slowapi/releases\"\u003eslowapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.1.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: Update warn to warning py3.11 deprecation by \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: allow Requests to be sent to exempt_when by \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: drop python 3.7 and 3.8 from CI checks by \u003ca href=\"https://github.com/laurentS\"\u003e\u003ccode\u003e@​laurentS\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/238\"\u003elaurentS/slowapi#238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: prepare 0.1.10 release by \u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/200\"\u003elaurentS/slowapi#200\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/160\"\u003elaurentS/slowapi#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ecly\"\u003e\u003ccode\u003e@​ecly\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/laurentS/slowapi/pull/212\"\u003elaurentS/slowapi#212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\"\u003ehttps://github.com/laurentS/slowapi/compare/v0.1.9...v0.1.10\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/laurentS/slowapi/blob/master/CHANGELOG.md\"\u003eslowapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.10] - 2026-06-13\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: allow usage of the request object in the except_when function (thanks \u003ca href=\"https://github.com/colin99d\"\u003e\u003ccode\u003e@​colin99d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded more test exemption logic (thanks \u003ca href=\"https://github.com/colin99\"\u003e\u003ccode\u003e@​colin99\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix logger warning for Python 3.11 deprecation  (thanks \u003ca href=\"https://github.com/kevin868\"\u003e\u003ccode\u003e@​kevin868\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/75799a3ec9498af10110068190356f704f838fe3\"\u003e\u003ccode\u003e75799a3\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/6f22eabc90a793d8c8459b6a8115c6f7fbb05bc5\"\u003e\u003ccode\u003e6f22eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/212\"\u003e#212\u003c/a\u003e from ecly/release-v0.1.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/5e2b9c108f79471fc96a5152bb69774894660cd1\"\u003e\u003ccode\u003e5e2b9c1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/238\"\u003e#238\u003c/a\u003e from laurentS/drop-old-python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a83ec7211ea664fcb65580a386845832c112892d\"\u003e\u003ccode\u003ea83ec72\u003c/code\u003e\u003c/a\u003e Update README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/d1a20b6a4e0ba063bdb2160379be531c385c40a3\"\u003e\u003ccode\u003ed1a20b6\u003c/code\u003e\u003c/a\u003e Drop python 3.7 and 3.8 from CI checks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/8bf8b2ec55677aa3c9e0f9bed9f1a48f0b0b8d2e\"\u003e\u003ccode\u003e8bf8b2e\u003c/code\u003e\u003c/a\u003e Make exempt_when with request backwards compatible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/eaf5ba76cd8657693bcec6dec281a35053b1164b\"\u003e\u003ccode\u003eeaf5ba7\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/a72bcc66597f620f04bf5be3676e40ed308d3a6a\"\u003e\u003ccode\u003ea72bcc6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/laurents/slowapi/issues/160\"\u003e#160\u003c/a\u003e from colin99d/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/42330fcddbf5ce22d18622ca14772cff256c2e74\"\u003e\u003ccode\u003e42330fc\u003c/code\u003e\u003c/a\u003e Merge branch 'laurentS:master' into master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laurentS/slowapi/commit/91145c087d658b6c3404935cd02155e291c2682b\"\u003e\u003ccode\u003e91145c0\u003c/code\u003e\u003c/a\u003e Fixed mypy error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/laurents/slowapi/compare/v0.1.9...v0.1.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.48 to 2.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.3\u003c/h1\u003e\n\u003cp\u003eReleased: October 2, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [regression]\u003c/strong\u003e Fixed regression where columns delivered to a mapped class from an\nunmapped \u003ccode\u003e_orm.MappedAsDataclass\u003c/code\u003e mixin, or from a class decorated\nwith \u003ccode\u003e_orm.unmapped_dataclass()\u003c/code\u003e, would not be placed in the\n\u003ccode\u003e_schema.Table\u003c/code\u003e in the order in which they were declared on the\nmixin; columns that had no dataclass default, such as a primary key column\nwith no \u003ccode\u003e_orm.mapped_column.default\u003c/code\u003e, or which made use of\n\u003ccode\u003e_orm.mapped_column.default_factory\u003c/code\u003e, would be moved after the\nremaining columns of the mixin.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13634\"\u003e#13634\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug] [regression]\u003c/strong\u003e Fixed regression caused by the new implementation of\n\u003ccode\u003eExecutableStatement.params()\u003c/code\u003e where parameter values established\nusing this method would not be rendered when compiling the statement with\nthe \u003ccode\u003eliteral_binds\u003c/code\u003e compiler option, instead rendering NULL with a\nwarning.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13635\"\u003e#13635\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.1.2\u003c/h1\u003e\n\u003cp\u003eReleased: October 2, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [regression]\u003c/strong\u003e Fixed regression caused by \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/5987\"\u003e#5987\u003c/a\u003e where the \u003ccode\u003eselectinload()\u003c/code\u003e\nloader strategy would ignore additional criteria present in the\n\u003ccode\u003e_orm.relationship.primaryjoin\u003c/code\u003e of a many-to-many relationship,\nsuch as a comparison against a column on the association table or on the\nparent table, loading related rows that should have been excluded.  The\n\u003ccode\u003eomit_join\u003c/code\u003e optimization for many-to-many relationships is now only used\nwhen the primar...\n\n_Description has been truncated_","html_url":"https://github.com/Yilmerher12/proyecto-verdeapp-adso/pull/445","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yilmerher12%2Fproyecto-verdeapp-adso/issues/445","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/445/packages"}},{"old_version":"0.52.4","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-13T18:06:20.000Z","version_change":"0.52.4 → 0.54.0","issue":{"uuid":"5835289744","node_id":"PR_kwDOQvxZUs8AAAABIO3ReA","number":116,"state":"closed","title":"chore(deps): bump the backend-production group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-10-13T18:32:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-13T18:06:20.000Z","updated_at":"2026-10-13T18:32:48.000Z","time_to_close":1585,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend-production","update_count":5,"packages":[{"name":"asyncpg","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"holidays","old_version":"0.104","new_version":"0.106","repository_url":"https://github.com/vacanza/holidays"},{"name":"svix","old_version":"2.5.0","new_version":"2.8.0","repository_url":"https://github.com/svix/svix-webhooks"},{"name":"uvicorn","old_version":"0.52.4","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-production group with 5 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.31.0` | `0.32.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [holidays](https://github.com/vacanza/holidays) | `0.104` | `0.106` |\n| [svix](https://github.com/svix/svix-webhooks) | `2.5.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.52.4` | `0.54.0` |\n\n\nUpdates `asyncpg` from 0.31.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1367\"\u003e#1367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 1b118464 and 58c0c595)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 8d2a5aed)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake pool \u003ccode\u003emin_size\u003c/code\u003e a maintained connection floor and add \u003ccode\u003einit_size\u003c/code\u003e to\ncontrol the number of connections opened at startup (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e).\nIdle connections at or below \u003ccode\u003emin_size\u003c/code\u003e are retained, and closed connections\nare replaced in the background. \u003ccode\u003einit_size\u003c/code\u003e defaults to \u003ccode\u003emin_size\u003c/code\u003e.\nTo preserve the previous behavior, where the pool could drain to zero,\nreplace \u003ccode\u003emin_size=N\u003c/code\u003e with \u003ccode\u003einit_size=N, min_size=0\u003c/code\u003e.\n(by \u003ca href=\"https://github.com/shatilov-diman\"\u003e\u003ccode\u003e@​shatilov-diman\u003c/code\u003e\u003c/a\u003e in 67a1cbc5)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003ehashlib.pbkdf2_hmac()\u003c/code\u003e for faster SCRAM password derivation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1359\"\u003e#1359\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/twelfthlabor\"\u003e\u003ccode\u003e@​twelfthlabor\u003c/code\u003e\u003c/a\u003e in 00319a9b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse the statement cache for \u003ccode\u003ecopy_records_to_table()\u003c/code\u003e introspection (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1360\"\u003e#1360\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/matemax\"\u003e\u003ccode\u003e@​matemax\u003c/code\u003e\u003c/a\u003e in dd058652)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClean up connections rejected by \u003ccode\u003etarget_session_attrs\u003c/code\u003e immediately so an\nunresponsive rejected host cannot delay the selected connection, and cleanup\ntasks cannot outlive the event loop. Rejected connections are aborted without\nwaiting for a graceful disconnect; servers may log \u0026quot;unexpected EOF on client\nconnection\u0026quot; if the Terminate message is not delivered before the transport\ncloses.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a connection pool deadlock when releasing a connection after a protocol\nabort (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1324\"\u003e#1324\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/pchaseh\"\u003e\u003ccode\u003e@​pchaseh\u003c/code\u003e\u003c/a\u003e in 4a83cc2f)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHonor \u003ccode\u003eConnection.close(timeout=...)\u003c/code\u003e while waiting for a pending\ncancellation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1361\"\u003e#1361\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in c06bcb4d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent stuck cancellation from blocking connection teardown or pool release\nby bounding cancellation with the command or release timeout (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1370\"\u003e#1370\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 4cf02203)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePreserve the server error when the connection closes mid-operation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1369\"\u003e#1369\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/RitiGrover\"\u003e\u003ccode\u003e@​RitiGrover\u003c/code\u003e\u003c/a\u003e in 6c8f1a7a)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix COPY cleanup when a records generator raises, preserving the original\nexception and avoiding protocol desynchronization and stalled rollback (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1358\"\u003e#1358\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/CodingCossack\"\u003e\u003ccode\u003e@​CodingCossack\u003c/code\u003e\u003c/a\u003e in fdc6bc8f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/d701e11a392b0e3b93b7af4a05c1cdadddf75f8f\"\u003e\u003ccode\u003ed701e11\u003c/code\u003e\u003c/a\u003e asyncpg v0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b04f8f299dd05c380e3c14d32bd1c881063c2b58\"\u003e\u003ccode\u003eb04f8f2\u003c/code\u003e\u003c/a\u003e Bump to macOS 26 in runners, set deployment target to 11 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1384\"\u003e#1384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/3934d77bfb558527a3708be686b6e0e7f90ce2b3\"\u003e\u003ccode\u003e3934d77\u003c/code\u003e\u003c/a\u003e tests: Capture expected pool retry warnings during role changes (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1383\"\u003e#1383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/2c3750179e0289b2fd03dc2baa8e87f75afa174b\"\u003e\u003ccode\u003e2c37501\u003c/code\u003e\u003c/a\u003e tests: Avoid DeprecationWarning when settings up uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1382\"\u003e#1382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b7eea79c920832d353073951c28aca687d532b4a\"\u003e\u003ccode\u003eb7eea79\u003c/code\u003e\u003c/a\u003e Test pool min_size backoff on target attribute mismatch (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1381\"\u003e#1381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/46dda9139700dc18e63ae638021edfaddf0bf3a4\"\u003e\u003ccode\u003e46dda91\u003c/code\u003e\u003c/a\u003e Terminate rejected target_session_attrs candidates before returning (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1380\"\u003e#1380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/8d2a5aedbf36c6116212454ebeb8c242140f76e5\"\u003e\u003ccode\u003e8d2a5ae\u003c/code\u003e\u003c/a\u003e Support PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/58c0c595272cb91b81be82620c479ab5431b4d70\"\u003e\u003ccode\u003e58c0c59\u003c/code\u003e\u003c/a\u003e Bump uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/67a1cbc5eb4a6aa5df140b27f48488921521d6f7\"\u003e\u003ccode\u003e67a1cbc\u003c/code\u003e\u003c/a\u003e Make pool min_size a maintained connection floor (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/25aaaf5412cf868388d076f359d12feb2479a4bb\"\u003e\u003ccode\u003e25aaaf5\u003c/code\u003e\u003c/a\u003e fix: allow cursors in external transactions (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.31.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `holidays` from 0.104 to 0.106\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vacanza/holidays/releases\"\u003eholidays's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.106\u003c/h2\u003e\n\u003ch2\u003eVersion 0.106\u003c/h2\u003e\n\u003cp\u003eReleased October 5, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bolsa de Valores de Colombia (BVC) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3845\"\u003e#3845\u003c/a\u003e by \u003ca href=\"https://github.com/Jsebastian323\"\u003e\u003ccode\u003e@​Jsebastian323\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Borsa Istanbul (BIST) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3858\"\u003e#3858\u003c/a\u003e by \u003ca href=\"https://github.com/priyen4\"\u003e\u003ccode\u003e@​priyen4\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/borsad\"\u003e\u003ccode\u003e@​borsad\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Warsaw Stock Exchange (GPW) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3837\"\u003e#3837\u003c/a\u003e by \u003ca href=\"https://github.com/Blizzeq\"\u003e\u003ccode\u003e@​Blizzeq\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Argentina holidays: add 2026 Visit of Pope Leo XIV holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3860\"\u003e#3860\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day (WA) and Eight Hours Day (TAS) start years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3846\"\u003e#3846\u003c/a\u003e by \u003ca href=\"https://github.com/ryanduguid\"\u003e\u003ccode\u003e@​ryanduguid\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day start years (ACT, QLD) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3832\"\u003e#3832\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Azerbaijan holidays: add substituted holidays from earlier years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3857\"\u003e#3857\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Bahrain holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3872\"\u003e#3872\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kuwait holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3873\"\u003e#3873\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malta holidays: add Arabic language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3849\"\u003e#3849\u003c/a\u003e by \u003ca href=\"https://github.com/moustafa-ash\"\u003e\u003ccode\u003e@​moustafa-ash\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Oman holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3870\"\u003e#3870\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Qatar holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3866\"\u003e#3866\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Saudi Arabia holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3865\"\u003e#3865\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Spain holidays: add Eid al-Fitr in Ceuta (CE) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3838\"\u003e#3838\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Turkmenistan holidays: add special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3847\"\u003e#3847\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate United Arab Emirates holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3864\"\u003e#3864\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Vietnam holidays: add Vietnam Cultural Day, 2025-2027 substituted holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3862\"\u003e#3862\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Warsaw Stock Exchange holidays: add Ukrainian language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3851\"\u003e#3851\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate iCalendar generation tool: add \u003ccode\u003e{all}\u003c/code\u003e placeholder to output template (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3829\"\u003e#3829\u003c/a\u003e by \u003ca href=\"https://github.com/Kanishka-v21\"\u003e\u003ccode\u003e@​Kanishka-v21\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReference maintenance: archive links (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3859\"\u003e#3859\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNew Contributors\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3832\"\u003evacanza/holidays#3832\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jsebastian323\"\u003e\u003ccode\u003e@​Jsebastian323\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3845\"\u003evacanza/holidays#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moustafa-ash\"\u003e\u003ccode\u003e@​moustafa-ash\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3849\"\u003evacanza/holidays#3849\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryanduguid\"\u003e\u003ccode\u003e@​ryanduguid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3846\"\u003evacanza/holidays#3846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Blizzeq\"\u003e\u003ccode\u003e@​Blizzeq\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3837\"\u003evacanza/holidays#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kanishka-v21\"\u003e\u003ccode\u003e@​Kanishka-v21\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3829\"\u003evacanza/holidays#3829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/priyen4\"\u003e\u003ccode\u003e@​priyen4\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vacanza/holidays/pull/3858\"\u003evacanza/holidays#3858\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vacanza/holidays/compare/v0.105...v0.106\"\u003ehttps://github.com/vacanza/holidays/compare/v0.105...v0.106\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.105\u003c/h2\u003e\n\u003ch2\u003eVersion 0.105\u003c/h2\u003e\n\u003cp\u003eReleased September 21, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor German School Holidays generator (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3808\"\u003e#3808\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactor imports in tests (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3819\"\u003e#3819\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add school holidays support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3821\"\u003e#3821\u003c/a\u003e by \u003ca href=\"https://github.com/gheydon\"\u003e\u003ccode\u003e@​gheydon\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Canada holidays: remove Boxing Day from optional holidays in QC (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3807\"\u003e#3807\u003c/a\u003e by \u003ca href=\"https://github.com/arbazkhan971\"\u003e\u003ccode\u003e@​arbazkhan971\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate India holidays: subdiv holidays improvement (East, North-East \u0026amp; South regions - I) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3784\"\u003e#3784\u003c/a\u003e by \u003ca href=\"https://github.com/ankushhKapoor\"\u003e\u003ccode\u003e@​ankushhKapoor\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Indonesia holidays: add 2027 special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3828\"\u003e#3828\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malaysia holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3814\"\u003e#3814\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Philippines holidays: add 2027 holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3817\"\u003e#3817\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vacanza/holidays/blob/dev/CHANGES.md\"\u003eholidays's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.106\u003c/h2\u003e\n\u003cp\u003eReleased October 5, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bolsa de Valores de Colombia (BVC) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3845\"\u003e#3845\u003c/a\u003e by \u003ca href=\"https://github.com/Jsebastian323\"\u003e\u003ccode\u003e@​Jsebastian323\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Borsa Istanbul (BIST) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3858\"\u003e#3858\u003c/a\u003e by \u003ca href=\"https://github.com/priyen4\"\u003e\u003ccode\u003e@​priyen4\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/borsad\"\u003e\u003ccode\u003e@​borsad\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Warsaw Stock Exchange (GPW) holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3837\"\u003e#3837\u003c/a\u003e by \u003ca href=\"https://github.com/Blizzeq\"\u003e\u003ccode\u003e@​Blizzeq\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Argentina holidays: add 2026 Visit of Pope Leo XIV holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3860\"\u003e#3860\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day (WA) and Eight Hours Day (TAS) start years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3846\"\u003e#3846\u003c/a\u003e by \u003ca href=\"https://github.com/ryanduguid\"\u003e\u003ccode\u003e@​ryanduguid\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add Labour Day start years (ACT, QLD) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3832\"\u003e#3832\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Azerbaijan holidays: add substituted holidays from earlier years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3857\"\u003e#3857\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Bahrain holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3872\"\u003e#3872\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kuwait holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3873\"\u003e#3873\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malta holidays: add Arabic language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3849\"\u003e#3849\u003c/a\u003e by \u003ca href=\"https://github.com/moustafa-ash\"\u003e\u003ccode\u003e@​moustafa-ash\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Oman holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3870\"\u003e#3870\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Qatar holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3866\"\u003e#3866\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Saudi Arabia holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3865\"\u003e#3865\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Spain holidays: add Eid al-Fitr in Ceuta (CE) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3838\"\u003e#3838\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Turkmenistan holidays: add special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3847\"\u003e#3847\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate United Arab Emirates holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3864\"\u003e#3864\u003c/a\u003e by \u003ca href=\"https://github.com/ahmershahdev\"\u003e\u003ccode\u003e@​ahmershahdev\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Vietnam holidays: add Vietnam Cultural Day, 2025-2027 substituted holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3862\"\u003e#3862\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Warsaw Stock Exchange holidays: add Ukrainian language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3851\"\u003e#3851\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate iCalendar generation tool: add \u003ccode\u003e{all}\u003c/code\u003e placeholder to output template (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3829\"\u003e#3829\u003c/a\u003e by \u003ca href=\"https://github.com/Kanishka-v21\"\u003e\u003ccode\u003e@​Kanishka-v21\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReference maintenance: archive links (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3859\"\u003e#3859\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.105\u003c/h2\u003e\n\u003cp\u003eReleased September 21, 2026\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor German School Holidays generator (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3808\"\u003e#3808\u003c/a\u003e by \u003ca href=\"https://github.com/PPsyrius\"\u003e\u003ccode\u003e@​PPsyrius\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactor imports in tests (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3819\"\u003e#3819\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Australia holidays: add school holidays support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3821\"\u003e#3821\u003c/a\u003e by \u003ca href=\"https://github.com/gheydon\"\u003e\u003ccode\u003e@​gheydon\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Canada holidays: remove Boxing Day from optional holidays in QC (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3807\"\u003e#3807\u003c/a\u003e by \u003ca href=\"https://github.com/arbazkhan971\"\u003e\u003ccode\u003e@​arbazkhan971\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate India holidays: subdiv holidays improvement (East, North-East \u0026amp; South regions - I) (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3784\"\u003e#3784\u003c/a\u003e by \u003ca href=\"https://github.com/ankushhKapoor\"\u003e\u003ccode\u003e@​ankushhKapoor\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Indonesia holidays: add 2027 special holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3828\"\u003e#3828\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Malaysia holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3814\"\u003e#3814\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Philippines holidays: add 2027 holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3817\"\u003e#3817\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate South Africa holidays: add Nov 4, 2026 holiday (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3809\"\u003e#3809\u003c/a\u003e by \u003ca href=\"https://github.com/lispwarez\"\u003e\u003ccode\u003e@​lispwarez\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for special holidays inheritance from parent entity (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3830\"\u003e#3830\u003c/a\u003e by \u003ca href=\"https://github.com/KJhellico\"\u003e\u003ccode\u003e@​KJhellico\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/arkid15r\"\u003e\u003ccode\u003e@​arkid15r\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/988414992d06a44a8b62584cfaa296a2c907ba56\"\u003e\u003ccode\u003e9884149\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3875\"\u003e#3875\u003c/a\u003e from vacanza/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/51ea00e2688359b691c77bd9a83137ae1fbf5c39\"\u003e\u003ccode\u003e51ea00e\u003c/code\u003e\u003c/a\u003e Finalize v0.106\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/d79e4f976411b5f53d7d8d018e53c64114897557\"\u003e\u003ccode\u003ed79e4f9\u003c/code\u003e\u003c/a\u003e Update Kuwait holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3873\"\u003e#3873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/5ac9ebe6ef27849f95cf9ab0a8f5f40a018f267e\"\u003e\u003ccode\u003e5ac9ebe\u003c/code\u003e\u003c/a\u003e Update Bahrain holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3872\"\u003e#3872\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/4927d878c1d7bc37e3e3be0bd45308183866a4d9\"\u003e\u003ccode\u003e4927d87\u003c/code\u003e\u003c/a\u003e Update Oman holidays: add Urdu language support (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3870\"\u003e#3870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/aabf782a7ff8a5e3fbffe0adabfa6f8dc6596074\"\u003e\u003ccode\u003eaabf782\u003c/code\u003e\u003c/a\u003e Update Azerbaijan holidays: add substituted holidays from earlier years (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3857\"\u003e#3857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/77a58e77287b976f653a8f27c53b694ccb241520\"\u003e\u003ccode\u003e77a58e7\u003c/code\u003e\u003c/a\u003e Reference maintenance: archive links (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3859\"\u003e#3859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/d3d0e37c371d567d32e0d187982e85cf35aae194\"\u003e\u003ccode\u003ed3d0e37\u003c/code\u003e\u003c/a\u003e Update Argentina holidays: add 2026 Visit of Pope Leo XIV holidays (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3860\"\u003e#3860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/173359e1b613748283345228074b7ea9ae39f43b\"\u003e\u003ccode\u003e173359e\u003c/code\u003e\u003c/a\u003e chore: Update snapshots (\u003ca href=\"https://redirect.github.com/vacanza/holidays/issues/3871\"\u003e#3871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vacanza/holidays/commit/d16f2c2c05f07864dc167a270686b7d1c1c2471a\"\u003e\u003ccode\u003ed16f2c2\u003c/code\u003e\u003c/a\u003e Update Vietnam holidays: add Vietnam Cultural Day, 2025-2027 substituted holi...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vacanza/holidays/compare/v0.104...v0.106\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `svix` from 2.5.0 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/svix/svix-webhooks/releases\"\u003esvix's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSDKs + CLI v2.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: You can now populate a request body from a file by using cURL-style \u003ccode\u003e@filename\u003c/code\u003e syntax; e.g.,\n\u003ccode\u003esvix streaming events create strm_abcdef123456789 @filename.json\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Honor cancellation duration wait for retry (use \u003ccode\u003eTask.Delay\u003c/code\u003e instead of \u003ccode\u003eThread.Sleep\u003c/code\u003e)\nin \u003ccode\u003eAsync\u003c/code\u003e methods\u003c/li\u003e\n\u003cli\u003eLibs/Ruby: Fix \u003ccode\u003eSvix::Webhook.new_using_raw_bytes\u003c/code\u003e to actually accept raw key bytes instead of\nbase64 encoded bytes\u003c/li\u003e\n\u003cli\u003eLibs/Go: Make \u003ccode\u003esvix.Message().GetOrCreate()\u003c/code\u003e work by changing an accidental pointer receiver\n(inconsistent with all other methods) to a value receiver, and allow passing \u003ccode\u003enil\u003c/code\u003e for options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/guilhermeappel\"\u003e\u003ccode\u003e@​guilhermeappel\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/svix/svix-webhooks/pull/2689\"\u003esvix/svix-webhooks#2689\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.7.0...v2.8.0\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.7.0...v2.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.7.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Return the new secret from \u003ccode\u003ev1.endpoint.rotate-secret\u003c/code\u003e, \u003ccode\u003ev1.destination.rotate-secret\u003c/code\u003e\nand \u003ccode\u003ev1.streaming.sink.rotate-secret\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Fix \u003ccode\u003eTimeoutMilliseconds\u003c/code\u003e option not being respected\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kdcokenny\"\u003e\u003ccode\u003e@​kdcokenny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/svix/svix-webhooks/pull/2679\"\u003esvix/svix-webhooks#2679\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.6.2...v2.7.0\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/(Java and Kotlin): Fix a bug that broke SDK methods where the underlying HTTP call\nuses a POST or PUT method and doesn't have any HTTP body parameters\u003c/li\u003e\n\u003cli\u003eLibs/Go: Fix module path such that v2 are properly released\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AdzerKI\"\u003e\u003ccode\u003e@​AdzerKI\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/svix/svix-webhooks/pull/2678\"\u003esvix/svix-webhooks#2678\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.6.1...v2.6.2\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.6.1...v2.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.6.1\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Update to latest Svix Cloud spec\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.6.0...v2.6.1\"\u003ehttps://github.com/svix/svix-webhooks/compare/v2.6.0...v2.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eSDKs + CLI v2.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/PHP: Add support for \u003ccode\u003edestination\u003c/code\u003e and \u003ccode\u003estream\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eLibs/PHP: Add \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/Python \u003cstrong\u003e(Breaking)\u003c/strong\u003e: Drop support for Python 3.9 (EOL). Minimum supported version is now 3.10\u003c/li\u003e\n\u003cli\u003eLibs/Rust: Revert an accidental breaking change to \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e that made a couple methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/svix/svix-webhooks/blob/main/ChangeLog.md\"\u003esvix's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: You can now populate a request body from a file by using cURL-style \u003ccode\u003e@filename\u003c/code\u003e syntax; e.g.,\n\u003ccode\u003esvix streaming events create strm_abcdef123456789 @filename.json\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Honor cancellation duration wait for retry (use \u003ccode\u003eTask.Delay\u003c/code\u003e instead of \u003ccode\u003eThread.Sleep\u003c/code\u003e)\nin \u003ccode\u003eAsync\u003c/code\u003e methods\u003c/li\u003e\n\u003cli\u003eLibs/Ruby: Fix \u003ccode\u003eSvix::Webhook.new_using_raw_bytes\u003c/code\u003e to actually accept raw key bytes instead of\nbase64 encoded bytes\u003c/li\u003e\n\u003cli\u003eLibs/Go: Make \u003ccode\u003esvix.Message().GetOrCreate()\u003c/code\u003e work by changing an accidental pointer receiver\n(inconsistent with all other methods) to a value receiver, and allow passing \u003ccode\u003enil\u003c/code\u003e for options\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.7.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Return the new secret from \u003ccode\u003ev1.endpoint.rotate-secret\u003c/code\u003e, \u003ccode\u003ev1.destination.rotate-secret\u003c/code\u003e\nand \u003ccode\u003ev1.streaming.sink.rotate-secret\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/C#: Fix \u003ccode\u003eTimeoutMilliseconds\u003c/code\u003e option not being respected\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.6.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/(Java and Kotlin): Fix a bug that broke SDK methods where the underlying HTTP call\nuses a POST or PUT method and doesn't have any HTTP body parameters\u003c/li\u003e\n\u003cli\u003eLibs/Go: Fix module path such that v2 are properly released\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/All: Update to latest Svix Cloud spec\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLibs/PHP: Add support for \u003ccode\u003edestination\u003c/code\u003e and \u003ccode\u003estream\u003c/code\u003e APIs\u003c/li\u003e\n\u003cli\u003eLibs/PHP: Add \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLibs/Python \u003cstrong\u003e(Breaking)\u003c/strong\u003e: Drop support for Python 3.9 (EOL). Minimum supported version is now 3.10\u003c/li\u003e\n\u003cli\u003eLibs/Rust: Revert an accidental breaking change to \u003ccode\u003eAutoConfigConsumer\u003c/code\u003e that made a couple methods\nrequire unique access to the object (\u003ccode\u003e\u0026amp;mut self\u003c/code\u003e) instead of shared access (\u003ccode\u003e\u0026amp;self\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/8712f5818aff9f8ef9ffd57ca6c55cd975ff7301\"\u003e\u003ccode\u003e8712f58\u003c/code\u003e\u003c/a\u003e Publish SDKs + CLI v2.8.0 (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2692\"\u003e#2692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/f450286c2ec9906f0e24ccd3d90a33a22bd38789\"\u003e\u003ccode\u003ef450286\u003c/code\u003e\u003c/a\u003e go: Fix Application.GetOrCreate (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2691\"\u003e#2691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/6f230375f52e2b89f7141a9883af08f99158220a\"\u003e\u003ccode\u003e6f23037\u003c/code\u003e\u003c/a\u003e ruby: Use the bytes passed to Webhook.new_using_raw_bytes as the key (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2661\"\u003e#2661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/df5099aea9276ec9c77c12cb0de9d5fc5c1c3ff8\"\u003e\u003ccode\u003edf5099a\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump the development group in /python with 3 updates (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2690\"\u003e#2690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/e38b6e0c5d0c198904ce861d14906df04bb6ee3f\"\u003e\u003ccode\u003ee38b6e0\u003c/code\u003e\u003c/a\u003e csharp: Use Task.Delay between retries so cancellation is honored (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2689\"\u003e#2689\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/48b58059ddc48509c390441e928d3ebb61454f9f\"\u003e\u003ccode\u003e48b5805\u003c/code\u003e\u003c/a\u003e cli: allow loading a request from a named file (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/adb3b5c4077c0f22bae2a2ab3b0d459ae0c14f8d\"\u003e\u003ccode\u003eadb3b5c\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump proxy-addr from 2.0.7 to 2.0.8 in /javascript (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2688\"\u003e#2688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/4710557d98b3d655ef8ee5ce5d1f4492b020fee1\"\u003e\u003ccode\u003e4710557\u003c/code\u003e\u003c/a\u003e build(deps): bump werkzeug from 3.1.8 to 3.1.9 in /python (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2687\"\u003e#2687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/d9f30585e34a172e3908d63abda38c19685ecdc5\"\u003e\u003ccode\u003ed9f3058\u003c/code\u003e\u003c/a\u003e Publish SDKs + CLI v2.7.0 (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2686\"\u003e#2686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/svix/svix-webhooks/commit/5114f175e00f4a2915d272a84fb4cac5b9929a57\"\u003e\u003ccode\u003e5114f17\u003c/code\u003e\u003c/a\u003e Update cloud spec and regenerate SDKs (\u003ca href=\"https://redirect.github.com/svix/svix-webhooks/issues/2684\"\u003e#2684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/svix/svix-webhooks/compare/v2.5.0...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.52.4 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/ORIOP25/Cronos/pull/116","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORIOP25%2FCronos/issues/116","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/116/packages"}},{"old_version":"0.52.4","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-13T17:14:52.000Z","version_change":"0.52.4 → 0.54.0","issue":{"uuid":"5834589787","node_id":"PR_kwDOUXDMF88AAAABIOTIrg","number":17,"state":"open","title":"Bump the python group across 1 directory with 46 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-13T17:14:52.000Z","updated_at":"2026-10-14T20:33:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":46,"packages":[{"name":"django","old_version":"6.0.8","new_version":"6.1.2","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.19.2","new_version":"65.19.7","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.18.1","new_version":"3.18.3","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"hiredis","old_version":"3.4.1","new_version":"3.4.2","repository_url":"https://github.com/redis/hiredis-py"},{"name":"coverage","old_version":"7.16.0","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-upgrade","old_version":"1.32.0","new_version":"1.33.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djlint","old_version":"1.46.1","new_version":"1.46.4","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.16.6","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"werkzeug","old_version":"3.1.8","new_version":"3.1.9","repository_url":"https://github.com/pallets/werkzeug"},{"name":"ast-serialize","old_version":"0.11.2","new_version":"0.12.1","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"django-allauth","old_version":"65.19.2","new_version":"65.19.7","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-stubs","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-stubs-ext","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"docutils","old_version":"0.22.4","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"executing","old_version":"2.2.1","new_version":"2.3.0","repository_url":"https://github.com/alexmojaki/executing"},{"name":"faker","old_version":"40.38.0","new_version":"40.43.0","repository_url":"https://github.com/joke2k/faker"},{"name":"identify","old_version":"2.6.19","new_version":"2.6.20","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.19","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"json5","old_version":"0.15.0","new_version":"0.17.3","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"librt","old_version":"0.15.0","new_version":"0.16.0","repository_url":"https://github.com/mypyc/librt"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"nodeenv","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.11.8","new_version":"4.12.4","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"psycopg","old_version":"3.3.5","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.3.5","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-c","old_version":"3.3.5","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"python-discovery","old_version":"1.6.0","new_version":"1.6.2","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"rcssmin","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/ndparker/rcssmin"},{"name":"regex","old_version":"2026.9.10","new_version":"2026.9.29","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"rjsmin","old_version":"1.2.5","new_version":"1.3.0","repository_url":"https://github.com/ndparker/rjsmin"},{"name":"rpds-py","old_version":"2026.6.3","new_version":"2026.9.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tzdata","old_version":"2026.4","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.52.4","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"21.7.9","new_version":"21.14.6","repository_url":"https://github.com/pypa/virtualenv"},{"name":"watchfiles","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.8.3","new_version":"0.9.2","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websockets","old_version":"17.1","new_version":"17.2","repository_url":"https://github.com/python-websockets/websockets"},{"name":"werkzeug","old_version":"3.1.8","new_version":"3.1.9","repository_url":"https://github.com/pallets/werkzeug"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 46 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.8` | `6.1.2` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.19.2` | `65.19.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.18.1` | `3.18.3` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.1` | `3.4.2` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.16.0` | `7.16.2` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.1.0` | `6.1.2` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.32.0` | `1.33.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.46.1` | `1.46.4` |\n| [mypy](https://github.com/python/mypy) | `2.3.1` | `2.4.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.6` | `0.17.0` |\n| [werkzeug[watchdog]](https://github.com/pallets/werkzeug) | `3.1.8` | `3.1.9` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.11.2` | `0.12.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.1` | `3.5.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.19.2` | `65.19.7` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.1.0` | `6.1.2` |\n| [django-stubs-ext](https://github.com/typeddjango/django-stubs) | `6.1.0` | `6.1.2` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.4` | `0.23` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.1` | `2.3.0` |\n| [faker](https://github.com/joke2k/faker) | `40.38.0` | `40.43.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.19` | `2.6.20` |\n| [idna](https://github.com/kjd/idna) | `3.19` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.3.0` | `2.3.1` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.15.0` | `0.17.3` |\n| [librt](https://github.com/mypyc/librt) | `0.15.0` | `0.16.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.10.0` | `1.11.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.11.8` | `4.12.4` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.5` | `3.3.6` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.5` | `3.3.6` |\n| [psycopg-c](https://github.com/psycopg/psycopg) | `3.3.5` | `3.3.6` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.6.0` | `1.6.2` |\n| [rcssmin](https://github.com/ndparker/rcssmin) | `1.2.2` | `1.3.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.9.10` | `2026.9.29` |\n| [rjsmin](https://github.com/ndparker/rjsmin) | `1.2.5` | `1.3.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.6.3` | `2026.9.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tzdata](https://github.com/python/tzdata) | `2026.4` | `2026.5` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.52.4` | `0.54.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.7.9` | `21.14.6` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.2.0` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.3` | `0.9.2` |\n| [websockets](https://github.com/python-websockets/websockets) | `17.1` | `17.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.8` | `3.1.9` |\n\n\nUpdates `django` from 6.0.8 to 6.1.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2212534bae393714e1e51db2341d4fd5545e19f6\"\u003e\u003ccode\u003e2212534\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1.2 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/75d401a1491e04a907ed745c128836d51c982c0f\"\u003e\u003ccode\u003e75d401a\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs CVE-2026-15830 -- Fixed WKB geometry collection limit bypasses.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/cce6c57ed30ea83725f9d6abb2fe5ee932bab107\"\u003e\u003ccode\u003ecce6c57\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-87975 -- Prevented forging actions in model formsets w...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/4e77ef1e69c94780006b82795aa7db101996c3af\"\u003e\u003ccode\u003e4e77ef1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-87890 -- Blocked bytes in spatial lookups.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/de56deeabd4c48dfb5193f0001469d80102fb367\"\u003e\u003ccode\u003ede56dee\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-84429 -- Simplified parse_header_parameters by leverag...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/7e878b0f8bd42260903e6a0d38996a93b0474a0b\"\u003e\u003ccode\u003e7e878b0\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-77050 -- Prevented memory exhaustion in get_supported_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/d8cf296d9668e146067337c6f2259be6ea2c7370\"\u003e\u003ccode\u003ed8cf296\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37322\"\u003e#37322\u003c/a\u003e -- Avoided transforms on spatial fields with srid=None.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/71084d68d3be55307be6698a7cff93244f98ad88\"\u003e\u003ccode\u003e71084d6\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37377\"\u003e#37377\u003c/a\u003e -- Fixed JSONField __in crash/wrong result for Value() p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/e34d77639cebc30b13bbbb82b04f97ba0da82cb4\"\u003e\u003ccode\u003ee34d776\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37386\"\u003e#37386\u003c/a\u003e -- Observed delete_confirmation_max_display=0 for inlines.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/25872ef34ee19f49887509138218fc08320f526c\"\u003e\u003ccode\u003e25872ef\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37361\"\u003e#37361\u003c/a\u003e -- Fixed permission renames for chained RenameModel oper...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.8...6.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.19.2 to 65.19.7\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.18.1 to 3.18.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eorder_by_precedence\u003c/code\u003e from 3.18.1 to fix broken return value by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10066\"\u003eencode/django-rest-framework#10066\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.18.2...3.18.3\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.18.2...3.18.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.18.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGHSA-33wh-fxxf-88vv: Harden content negotiation against large \u003ccode\u003eAccept\u003c/code\u003e headers by \u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/148ab65\"\u003e148ab65\u003c/a\u003e. Thanks \u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e for the report.\u003c/li\u003e\n\u003cli\u003eGHSA-3547-9m27-7rxg: Refuse non-text encoding charsets by \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/3c26345\"\u003e3c26345\u003c/a\u003e. Thanks \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e who both reported the problem.\u003c/li\u003e\n\u003cli\u003eGHSA-xw6w-gcfp-cf8m: Make \u003ccode\u003eTokenProxy\u003c/code\u003e deletion actually delete the token by \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/af3fabf\"\u003eaf3fabf\u003c/a\u003e. Thanks \u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e for the report.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.15 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10025\"\u003eencode/django-rest-framework#10025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eblank=True\u003c/code\u003e fields in unique constraints being treated as required by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10039\"\u003eencode/django-rest-framework#10039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueConstraint\u003c/code\u003e validation with conditional fields by \u003ca href=\"https://github.com/majidkhazaei\"\u003e\u003ccode\u003e@​majidkhazaei\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10021\"\u003eencode/django-rest-framework#10021\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/olitreadwell\"\u003e\u003ccode\u003e@​olitreadwell\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10038\"\u003eencode/django-rest-framework#10038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majidkhazaei\"\u003e\u003ccode\u003e@​majidkhazaei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10021\"\u003eencode/django-rest-framework#10021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rblotsky\"\u003e\u003ccode\u003e@​rblotsky\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10045\"\u003eencode/django-rest-framework#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrchatam\"\u003e\u003ccode\u003e@​mrchatam\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10042\"\u003eencode/django-rest-framework#10042\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haimingZZ\"\u003e\u003ccode\u003e@​haimingZZ\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10052\"\u003eencode/django-rest-framework#10052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jisung-02\"\u003e\u003ccode\u003e@​jisung-02\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/148ab65\"\u003e148ab65\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/syrull\"\u003e\u003ccode\u003e@​syrull\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://github.com/encode/django-rest-framework/commit/3c26345\"\u003e3c26345\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.18.1...3.18.2\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.18.1...3.18.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/1af5b55758ac514c492ed3a5fc1a6fb244cdb257\"\u003e\u003ccode\u003e1af5b55\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.3 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10067\"\u003e#10067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/e140de794d11149a09c04a3ee7cc4815946148f8\"\u003e\u003ccode\u003ee140de7\u003c/code\u003e\u003c/a\u003e Restore order_by_precedence from 3.18.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10066\"\u003e#10066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7195f7e4c51527054623ea55fc4491786acc91f8\"\u003e\u003ccode\u003e7195f7e\u003c/code\u003e\u003c/a\u003e Bump the pre-commit group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10063\"\u003e#10063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69694a17d0b6ac14b4ea4d77916b73c68dc5a3e8\"\u003e\u003ccode\u003e69694a1\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.2 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10065\"\u003e#10065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/af3fabfd517307fbc5d500fba1ab8f6e25f220b0\"\u003e\u003ccode\u003eaf3fabf\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/3c2634599b26a9f789b03045118dbc276117611a\"\u003e\u003ccode\u003e3c26345\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/148ab6523922d5a0c110f76615935e5220b63029\"\u003e\u003ccode\u003e148ab65\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/3d18900ead34e9491f94597617a12fdd47161e97\"\u003e\u003ccode\u003e3d18900\u003c/code\u003e\u003c/a\u003e Fix CI that broke due to latest Django bugfix (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10064\"\u003e#10064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d6c45646edc9c6644ea159f7f786da598bc1ab66\"\u003e\u003ccode\u003ed6c4564\u003c/code\u003e\u003c/a\u003e Improve teardown of test modifying INSTALLED_APPS (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10056\"\u003e#10056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/41764f1f8cfb6d40b77b58c97cf9aeaab57c6b5c\"\u003e\u003ccode\u003e41764f1\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action in the github-actions group (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10058\"\u003e#10058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.18.1...3.18.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.1 to 3.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.2\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release. Users of hiredis-py 3.4.x that receive RESP3 push notifications — pub/sub deliveries or client-side cache invalidations — are encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🐛 Bug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRelease the list each push notification is sized from (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003ePushNotificationType_New\u003c/code\u003e pre-sized every \u003ccode\u003ePushNotification\u003c/code\u003e with a list that \u003ccode\u003ePyList_SetSlice\u003c/code\u003e only borrows, and the reference was never dropped. Each RESP3 push notification therefore stranded one list object for the lifetime of the process. Because push notifications carry pub/sub deliveries and client-side caching invalidations, the leak grew with \u003cem\u003emessage volume\u003c/em\u003e rather than with the number of connections, making it unbounded for a long-lived subscriber — roughly 20 MB per 200,000 four-element notifications, and more for larger ones. Dropping the reference also removes an allocation from the parse path, which makes parsing a small notification about 10% faster.\u003c/p\u003e\n\u003cp\u003eThe same change checks \u003ccode\u003ePyList_New\u003c/code\u003e for failure and guards \u003ccode\u003etryParentize\u003c/code\u003e against a \u003ccode\u003eNULL\u003c/code\u003e reply, so an allocation failure is now reported as an error instead of writing elements past the end of a zero-length notification.\u003c/p\u003e\n\u003cp\u003eRESP2 array replies were never affected.\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/mmick78\"\u003e\u003ccode\u003e@​mmick78\u003c/code\u003e\u003c/a\u003e for finding and fixing this.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b1b29513f005fbd2554711c1ed051a04b424283c\"\u003e\u003ccode\u003eb1b2951\u003c/code\u003e\u003c/a\u003e [3.4] Release the list each push notification is sized from, release 3.4.2 (#...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.1...v3.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.16.0 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.16.0...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.1.0 to 6.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003emypy@2.4\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLoosen \u003ccode\u003eWidget.format_value\u003c/code\u003e and remove override ignores by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3643\"\u003etypeddjango/django-stubs#3643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003email: Accept smtp timeout as float by \u003ca href=\"https://github.com/9128305\"\u003e\u003ccode\u003e@​9128305\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3656\"\u003etypeddjango/django-stubs#3656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix lookup expected type for transform chains (e.g. start_date__year__in) by \u003ca href=\"https://github.com/manysuq\"\u003e\u003ccode\u003e@​manysuq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3655\"\u003etypeddjango/django-stubs#3655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow a sequence of ActionLocation in admin.action's location by \u003ca href=\"https://github.com/knyghty\"\u003e\u003ccode\u003e@​knyghty\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3661\"\u003etypeddjango/django-stubs#3661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/9128305\"\u003e\u003ccode\u003e@​9128305\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3656\"\u003etypeddjango/django-stubs#3656\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.1.1...6.1.2\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.1.1...6.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.1.1\u003c/h2\u003e\n\u003ch2\u003eHighlight\u003c/h2\u003e\n\u003cp\u003eThis release does some changes around \u003ccode\u003eManager\u003c/code\u003e / \u003ccode\u003eRelatedManager\u003c/code\u003e and the auto generated \u003ccode\u003eobjects\u003c/code\u003e attribute to work better with typechecker like pyright / ty / pyrefly and be more strict about the fact that \u003ccode\u003eMyModel().objects\u003c/code\u003e is not valid.\u003c/p\u003e\n\u003cp\u003eHowever, to support that, existing broad annotations of related managers need to be narrowed or access to these related managers will be flagged as an error. For ex:\u003c/p\u003e\n\u003cpre lang=\"diff\"\u003e\u003ccode\u003efrom django.db import models\r\nfrom django_stubs_ext.db.models.manager import ManyRelatedManager, RelatedManager\r\n\u003cp\u003eclass Article(models.Model):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ecategory_set: Manager[Category]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003ecategory_set: RelatedManager[Category]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003etags: Manager[Tag, ArticleTag]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003etags: ManyRelatedManager[Tag, ArticleTag]\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you use the mypy plugin, you should also be able to drop these annotation completely in most cases. The plugin infers these types automatically.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/typeddjango/django-stubs#do-i-need-to-annotate-reverse-relations\"\u003ehttps://github.com/typeddjango/django-stubs#do-i-need-to-annotate-reverse-relations\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix revealed type for DistanceField and AreaField by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3587\"\u003etypeddjango/django-stubs#3587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow database variants in on_delete for related fields. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3591\"\u003etypeddjango/django-stubs#3591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bogus name-defined error for cross-module as_manager overrides by \u003ca href=\"https://github.com/BenA-SA\"\u003e\u003ccode\u003e@​BenA-SA\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3597\"\u003etypeddjango/django-stubs#3597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix monkeypatch() erasing parametrization of real Generic subclasses by \u003ca href=\"https://github.com/mylittletraf\"\u003e\u003ccode\u003e@​mylittletraf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3610\"\u003etypeddjango/django-stubs#3610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't build a ManyRelatedManager from a placeholder _Through by \u003ca href=\"https://github.com/codebreach\"\u003e\u003ccode\u003e@​codebreach\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3608\"\u003etypeddjango/django-stubs#3608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnnotate \u003ccode\u003eFileField.save_form_data\u003c/code\u003e by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3606\"\u003etypeddjango/django-stubs#3606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisallow \u003ccode\u003eNone\u003c/code\u003e passed to \u003ccode\u003eFileField.generate_filename\u003c/code\u003e by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3607\"\u003etypeddjango/django-stubs#3607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd overloads for \u003ccode\u003eassertTemplateUsed\u003c/code\u003e and \u003ccode\u003eassertTemplateNotUsed\u003c/code\u003e by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3564\"\u003etypeddjango/django-stubs#3564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd defaults to the form type parameters of generic editing views by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3615\"\u003etypeddjango/django-stubs#3615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve objects through the metaclass and ban manager access on instances by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3593\"\u003etypeddjango/django-stubs#3593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003esetter\u003c/code\u003e in \u003ccode\u003ehashers.check_password\u003c/code\u003e better by \u003ca href=\"https://github.com/Kakadus\"\u003e\u003ccode\u003e@​Kakadus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3621\"\u003etypeddjango/django-stubs#3621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003eAbstractBaseUser.natural_key\u003c/code\u003e return type by \u003ca href=\"https://github.com/Kakadus\"\u003e\u003ccode\u003e@​Kakadus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3622\"\u003etypeddjango/django-stubs#3622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e@admin.display\u003c/code\u003e overload to specify \u003ccode\u003efunction\u003c/code\u003e by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3620\"\u003etypeddjango/django-stubs#3620\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/fa03b48b8cdfe336065f5ad8eb51fbcc40c6b1d2\"\u003e\u003ccode\u003efa03b48\u003c/code\u003e\u003c/a\u003e Version 6.1.2 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/3568355bc144517b793f360884ea500f8c4c8352\"\u003e\u003ccode\u003e3568355\u003c/code\u003e\u003c/a\u003e Update dependency mypy to \u0026gt;=1.13,\u0026lt;2.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/46cd7de1d2f48ecf9727992e4c7ce114d3f98b8f\"\u003e\u003ccode\u003e46cd7de\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v1.3.2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/de0b49c8fb5d82bb2d5ab86ab4e4a92430a3893b\"\u003e\u003ccode\u003ede0b49c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c7b59a09461784a6ec07704fcfc67391f7e8000d\"\u003e\u003ccode\u003ec7b59a0\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.83 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3671\"\u003e#3671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e3a1189abb30e181d2e68fd6dd3cb868505dd584\"\u003e\u003ccode\u003ee3a1189\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.2.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3672\"\u003e#3672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f0a186a2e272abcfdbd01e3f774c46afff9cd208\"\u003e\u003ccode\u003ef0a186a\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.75.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/63161efeb94263520bed6fb6fb1023844b4b5872\"\u003e\u003ccode\u003e63161ef\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/dc0185492a5a26c64d8fc67278580ea5eb911c3f\"\u003e\u003ccode\u003edc01854\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.6 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d563832a021a84d56592e2828d054e56572421cb\"\u003e\u003ccode\u003ed563832\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.82 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.1.0...6.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.32.0 to 1.33.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.33.0 (2026-10-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eReduce garbage collection frequency while fixing files, yielding a performance improvement of 2-7%, depending on Python version.\nMeasured on the source code of Django, Saleor, Wagtail, and Zulip, with no changes to make, the median speedups were ~7% on Python 3.11, ~3% on Python 3.13, and ~2% on Python 3.14, with no change in peak memory usage.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#735](https://github.com/adamchainz/django-upgrade/issues/735) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/735\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSpeed up the AST traversal by skipping fields that never contain nodes for fixers, such as expression contexts, yielding a further performance improvement of 3-7% on the same projects.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#736](https://github.com/adamchainz/django-upgrade/issues/736) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/736\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOnly call fixers for function calls, names, and attributes with names they handle, yielding a further performance improvement of 23-29% on the same projects.\nCombined with the above changes, django-upgrade is now 27-38% faster on these projects.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#737](https://github.com/adamchainz/django-upgrade/issues/737) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/737\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/5ccd385680292c5e5b10bedf0a3e509b5e6e9da8\"\u003e\u003ccode\u003e5ccd385\u003c/code\u003e\u003c/a\u003e Version 1.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/1d134cf353066b9cb281d45e88efd01c75f0de27\"\u003e\u003ccode\u003e1d134cf\u003c/code\u003e\u003c/a\u003e Add links to changelog notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/8dc2dbac056bf44b3487e68dfa57e45d84a56766\"\u003e\u003ccode\u003e8dc2dba\u003c/code\u003e\u003c/a\u003e Dispatch fixer callbacks by name (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7c4ff49d3870c6b746cf2ca11c89aaadff359ee8\"\u003e\u003ccode\u003e7c4ff49\u003c/code\u003e\u003c/a\u003e Speed up AST traversal in \u003ccode\u003evisit()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/f2edbc3b0eaa517f1c36732c475007c700356191\"\u003e\u003ccode\u003ef2edbc3\u003c/code\u003e\u003c/a\u003e Reduce garbage collection frequency while fixing (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/735\"\u003e#735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4580ebd9bf9fb9bcb89c3f61aceff21c4a9c74ab\"\u003e\u003ccode\u003e4580ebd\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/734\"\u003e#734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/0c01d574b5cda79327614493c20fbefaf6f9fc49\"\u003e\u003ccode\u003e0c01d57\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/592d36791b845dba8d0333f5c1f05289baf5a075\"\u003e\u003ccode\u003e592d367\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.32.0...1.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.46.1 to 1.46.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.46.4\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA line that opens a template block now indents the lines inside it when the rest of the line looks like a single-line html tag. Before, html in a string argument, as in \u003ccode\u003e{% call modal(\u0026quot;\u0026lt;strong\u0026gt;\u0026quot; ~ n ~ \u0026quot;\u0026lt;/strong\u0026gt;\u0026quot;) %}\u003c/code\u003e, or inline html right after the opening tag, as in \u003ccode\u003e{% if a %}\u0026lt;b\u0026gt;x\u0026lt;/b\u0026gt;\u003c/code\u003e, left the block's contents at its own level, and its closing tag ended up one level too far out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.46.3\u003c/h2\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA long run of unclosed \u003ccode\u003e{{\u003c/code\u003e or \u003ccode\u003e{%\u003c/code\u003e no longer makes linting and formatting quadratic. Each was read again from every opener to the end of the line or the file, so eight thousand \u003ccode\u003e{{\u003c/code\u003e on one line took over half a minute to lint and as long again to format, and twenty thousand in one attribute value took \u003ccode\u003eH054\u003c/code\u003e alone 80 seconds; each now takes well under a second. A second opener is taken to mean the first one never closed, which is how the tokenizer already read them. \u003ccode\u003eT038\u003c/code\u003e still reads an unclosed \u003ccode\u003e{%\u003c/code\u003e up to the next \u003ccode\u003e%}\u003c/code\u003e, as django does, so a run of those stays slow there.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA \u003ccode\u003e\u0026gt;\u003c/code\u003e inside a string of a template tag no longer ends the html tag around it when the string reuses the attribute's quote, as in \u003ccode\u003eclass=\u0026quot;{{ classes|default:\u0026quot;[\u0026amp;\u0026gt;a]:flex\u0026quot; }}\u0026quot;\u003c/code\u003e. Before, the linter lost the rest of the tag, so \u003ccode\u003eH037\u003c/code\u003e missed a repeated attribute after it, and the formatter put a line break inside the string.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH054\u003c/code\u003e no longer reads an attribute out of a \u003ccode\u003e{# #}\u003c/code\u003e comment in another attribute's value, as in \u003ccode\u003e\u0026lt;a title=\u0026quot;{# \u0026quot; href #}\u0026quot;\u0026gt;\u003c/code\u003e, and leaves an input alone when an \u003ccode\u003e{% if %}\u003c/code\u003e writes its type and another tag writes the value, as in \u003ccode\u003e{% if shown %}type=\u0026quot;{% if hidden %}hidden{% else %}text{% endif %}\u0026quot;{% endif %}\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003e{#\u003c/code\u003e inside a \u003ccode\u003e{{ }}\u003c/code\u003e or \u003ccode\u003e{% %}\u003c/code\u003e tag, as in \u003ccode\u003e{{ \u0026quot;{# x\u0026quot; }}\u003c/code\u003e or an ICU message such as \u003ccode\u003e{n, plural, one {# item} other {# items}}\u003c/code\u003e, no longer opens a comment that runs to the next \u003ccode\u003e#}\u003c/code\u003e in the file. Before, the linter skipped everything in between, so \u003ccode\u003eT038\u003c/code\u003e reported the \u003ccode\u003e{% if %}\u003c/code\u003e before it as unclosed and \u003ccode\u003eT041\u003c/code\u003e missed an \u003ccode\u003e{% extends %}\u003c/code\u003e after it, and the formatter left the lines in between unformatted. A tag ends at its first closing delimiter, which is where django ends it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.46.2\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEach option on the configuration page now carries the release that brought it, so a reader held to an older djLint can tell at a glance what is there to reach for. The page's filter searches the versions too.\u003c/li\u003e\n\u003cli\u003edjLint publishes its own json schema at \u003ca href=\"https://djlint.com/schema/djlint.json\"\u003ehttps://djlint.com/schema/djlint.json\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum required regex version is lowered from 2022.6.2 back to 2021.8.21, the first release that ships wheels for Python 3.10, which is djLint's own minimum.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/blob/master/CHANGELOG.md\"\u003edjlint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.46.4] - 2026-10-01\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA line that opens a template block now indents the lines inside it when the rest of the line looks like a single-line html tag. Before, html in a string argument, as in \u003ccode\u003e{% call modal(\u0026quot;\u0026lt;strong\u0026gt;\u0026quot; ~ n ~ \u0026quot;\u0026lt;/strong\u0026gt;\u0026quot;) %}\u003c/code\u003e, or inline html right after the opening tag, as in \u003ccode\u003e{% if a %}\u0026lt;b\u0026gt;x\u0026lt;/b\u0026gt;\u003c/code\u003e, left the block's contents at its own level, and its closing tag ended up one level too far out.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.46.3] - 2026-09-28\u003c/h2\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA long run of unclosed \u003ccode\u003e{{\u003c/code\u003e or \u003ccode\u003e{%\u003c/code\u003e no longer makes linting and formatting quadratic. Each was read again from every opener to the end of the line or the file, so eight thousand \u003ccode\u003e{{\u003c/code\u003e on one line took over half a minute to lint and as long again to format, and twenty thousand in one attribute value took \u003ccode\u003eH054\u003c/code\u003e alone 80 seconds; each now takes well under a second. A second opener is taken to mean the first one never closed, which is how the tokenizer already read them. \u003ccode\u003eT038\u003c/code\u003e still reads an unclosed \u003ccode\u003e{%\u003c/code\u003e up to the next \u003ccode\u003e%}\u003c/code\u003e, as django does, so a run of those stays slow there.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA \u003ccode\u003e\u0026gt;\u003c/code\u003e inside a string of a template tag no longer ends the html tag around it when the string reuses the attribute's quote, as in \u003ccode\u003eclass=\u0026quot;{{ classes|default:\u0026quot;[\u0026amp;\u0026gt;a]:flex\u0026quot; }}\u0026quot;\u003c/code\u003e. Before, the linter lost the rest of the tag, so \u003ccode\u003eH037\u003c/code\u003e missed a repeated attribute after it, and the formatter put a line break inside the string.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH054\u003c/code\u003e no longer reads an attribute out of a \u003ccode\u003e{# #}\u003c/code\u003e comment in another attribute's value, as in \u003ccode\u003e\u0026lt;a title=\u0026quot;{# \u0026quot; href #}\u0026quot;\u0026gt;\u003c/code\u003e, and leaves an input alone when an \u003ccode\u003e{% if %}\u003c/code\u003e writes its type and another tag writes the value, as in \u003ccode\u003e{% if shown %}type=\u0026quot;{% if hidden %}hidden{% else %}text{% endif %}\u0026quot;{% endif %}\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003e{#\u003c/code\u003e inside a \u003ccode\u003e{{ }}\u003c/code\u003e or \u003ccode\u003e{% %}\u003c/code\u003e tag, as in \u003ccode\u003e{{ \u0026quot;{# x\u0026quot; }}\u003c/code\u003e or an ICU message such as \u003ccode\u003e{n, plural, one {# item} other {# items}}\u003c/code\u003e, no longer opens a comment that runs to the next \u003ccode\u003e#}\u003c/code\u003e in the file. Before, the linter skipped everything in between, so \u003ccode\u003eT038\u003c/code\u003e reported the \u003ccode\u003e{% if %}\u003c/code\u003e before it as unclosed and \u003ccode\u003eT041\u003c/code\u003e missed an \u003ccode\u003e{% extends %}\u003c/code\u003e after it, and the formatter left the lines in between unformatted. A tag ends at its first closing delimiter, which is where django ends it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.46.2] - 2026-09-19\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEach option on the configuration page now carries the release that brought it, so a reader held to an older djLint can tell at a glance what is there to reach for. The page's filter searches the versions too.\u003c/li\u003e\n\u003cli\u003edjLint publishes its own json schema at \u003ca href=\"https://djlint.com/schema/djlint.json\"\u003ehttps://djlint.com/schema/djlint.json\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum required regex version is lowered from 2022.6.2 back to 2021.8.21, the first release that ships wheels for Python 3.10, which is djLint's own minimum.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/97266b950ee135d6ef89c9ace9d88baadced6f67\"\u003e\u003ccode\u003e97266b9\u003c/code\u003e\u003c/a\u003e chore(deps): update pre-commit hook tombi-toml/tombi-pre-commit to v1.5.6 (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/5f40a434241d69428152cada7a63f3e25d19582e\"\u003e\u003ccode\u003e5f40a43\u003c/code\u003e\u003c/a\u003e v1.46.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/47128e081ee74481e5c7386f3e3739158c3c09b1\"\u003e\u003ccode\u003e47128e0\u003c/code\u003e\u003c/a\u003e fix: indent under a block opener that holds inline html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/afe85bc3358ddc5d7ceb1af9ecf12bbb6491047e\"\u003e\u003ccode\u003eafe85bc\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2583\"\u003e#2583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/257c30fb1ddf311eb9b82658cc0d5adad4c90857\"\u003e\u003ccode\u003e257c30f\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2582\"\u003e#2582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/f1db0c54ccd6bc1934640e09cf977a640adcb0e5\"\u003e\u003ccode\u003ef1db0c5\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2581\"\u003e#2581\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/0fe43b78ec51686f2db7167e311d4293fd0680cd\"\u003e\u003ccode\u003e0fe43b7\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/djlint/djLint/issues/2580\"\u003e#2580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/df19d81c59b0b15585e5ae3144952a2903646210\"\u003e\u003ccode\u003edf19d81\u003c/code\u003e\u003c/a\u003e v1.46.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/83a1c0fc483e7ba7e3efd5a39bced6c681007ae7\"\u003e\u003ccode\u003e83a1c0f\u003c/code\u003e\u003c/a\u003e perf: stop reading a template tag at the next opener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/djlint/djLint/commit/6ab9892a68620a0bdcc4e2ff964f84069689e65a\"\u003e\u003ccode\u003e6ab9892\u003c/code\u003e\u003c/a\u003e perf: read a run of unclosed template openers once\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/djlint/djLint/compare/v1.46.1...v1.46.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.3.1 to 2.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.4\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.4.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003ePython 3.15 Support\u003c/h3\u003e\n\u003cp\u003eMypy 2.4 supports running on Python 3.15 and type checking most Python\n3.15 features. This includes the new builtin \u003ccode\u003esentinel\u003c/code\u003e type for\nsentinel values (PEP 661), which mypy now supports (see below for\ndetails). Lazy imports (PEP 810) and unpacking in comprehensions\n(PEP 798) are also supported. Closed TypedDicts (PEP 728) have been\nsupported since mypy 2.2, but the \u003ccode\u003eextra_items\u003c/code\u003e TypedDict argument,\nalso introduced in PEP 728, is still unsupported. Support for\n\u003ccode\u003eextra_items\u003c/code\u003e will be added in a future mypy release.\u003c/p\u003e\n\u003ch3\u003eNative Parser Enabled by Default\u003c/h3\u003e\n\u003cp\u003eMypy now uses the new native parser by default. It's based on the Ruff\nparser, and it's significantly faster than the legacy parser, which\nuses the stdlib \u003ccode\u003east\u003c/code\u003e module. The native parser also has other\nbenefits:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou can target newer Python versions and use recent Python syntax\neven when running mypy on an older Python version. For example, you\ncan use \u003ccode\u003e--python-version 3.15\u003c/code\u003e when running mypy on Python 3.14.\u003c/li\u003e\n\u003cli\u003eStub files can use syntax that is newer than the target Python\nversion. For example, stubs can use the PEP 695 generic class syntax\n(\u003ccode\u003eclass Box[T]: ...\u003c/code\u003e) when running on or targeting Python 3.10.\u003c/li\u003e\n\u003cli\u003eParallel type checking requires the native parser.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe legacy parser is still available through \u003ccode\u003e--no-native-parser\u003c/code\u003e, or\n\u003ccode\u003enative_parser = False\u003c/code\u003e in the config file (\u003ccode\u003enative_parser = false\u003c/code\u003e\nunder \u003ccode\u003e[tool.mypy]\u003c/code\u003e in pyproject.toml). We are planning to remove the\nlegacy parser in early 2027. If you run into a problem with the native\nparser, please report it on the\n\u003ca href=\"https://github.com/python/mypy/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eUnlike the legacy parser, the native parser doesn't support type\ncomments for variables defined by \u003ccode\u003efor\u003c/code\u003e and \u003ccode\u003ewith\u003c/code\u003e statements. These\ntype comments are silently ignored, and the types of the variables are\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/935ba8afba7ceacca0651579450c74339f343016\"\u003e\u003ccode\u003e935ba8a\u003c/code\u003e\u003c/a\u003e Bump version to 2.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/334a678967dc6bcda3d3f8cb82e253dd61fa2be9\"\u003e\u003ccode\u003e334a678\u003c/code\u003e\u003c/a\u003e Add link for PR 22066 in mypy 2.4 changelog (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22082\"\u003e#22082\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/fe69660bcdaa76cccb1aedbb4b9c1c7627215571\"\u003e\u003ccode\u003efe69660\u003c/code\u003e\u003c/a\u003e Finalize mypy 2.4 changelog (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22080\"\u003e#22080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/541fd87ac53581fb3c511b277fd780ec4e869c95\"\u003e\u003ccode\u003e541fd87\u003c/code\u003e\u003c/a\u003e Various mypy 2.4 changelog updates (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22077\"\u003e#22077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b231182c0b2993918f74594236bda7d3ec6fcbe5\"\u003e\u003ccode\u003eb231182\u003c/code\u003e\u003c/a\u003e Update native parser docs (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22078\"\u003e#22078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/04fe42ce217f120a4de2c1fd62b71ef77452d699\"\u003e\u003ccode\u003e04fe42c\u003c/code\u003e\u003c/a\u003e Initial Changelog for Mypy 2.4 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22071\"\u003e#22071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/06174941bca0e88567441ee3cb0ffaef0dd22e2c\"\u003e\u003ccode\u003e0617494\u003c/code\u003e\u003c/a\u003e Quick fix for non UTF-8 encodings with new parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22066\"\u003e#22066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b2f9b60eae5ac7cd9c6a60650b128815bb703daf\"\u003e\u003ccode\u003eb2f9b60\u003c/code\u003e\u003c/a\u003e Bump librt to 0.16.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22067\"\u003e#22067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/9d798dcb9589f9bd62e625a97d8db23ad9a678fa\"\u003e\u003ccode\u003e9d798dc\u003c/code\u003e\u003c/a\u003e Sync typeshed (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22054\"\u003e#22054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0861bb6450d6d3658e44dbca9cd2ba478faf3c1d\"\u003e\u003ccode\u003e0861bb6\u003c/code\u003e\u003c/a\u003e Reduce max protocol stack size to 20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/22053\"\u003e#22053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.1...v2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.6 to 0.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through \u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or \u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15 instead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules (\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default, while \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and includes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e now recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003efull\u003c/code\u003e output format now shows unsafe fixes and suggestions requiring manual review, regardless of the \u003ca href=\"https://docs.astral.sh/ruff/settings/#unsafe-fixes\"\u003e\u003ccode\u003eunsafe-fixes\u003c/code\u003e\u003c/a\u003e setting. Actually applying unsafe fixes still requires explicit opt-in.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove the Python dependency from conda-forge builds (\u003ca href=\"https://redirect.github.com/conda-forge/ruff-feedstock/pull/361\"\u003econda-forge/ruff-feedstock#361\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe conda-forge build no longer depends on Python, now supports linux-riscv64, win-arm64, and linux-ppc64le platforms, and now includes shell completions. However, no longer depending on Python means that \u003ccode\u003epython -m ruff\u003c/code\u003e and \u003ccode\u003eimport ruff\u003c/code\u003e will no longer work. Use \u003ccode\u003eruff\u003c/code\u003e directly from \u003ccode\u003ePATH\u003c/code\u003e instead. PyPI installations and those from the standalone installer are unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove support for ruff-lsp (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28750\"\u003e#28750\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSupport for \u003ccode\u003eruff-lsp\u003c/code\u003e, the legacy Python language server \u003ca href=\"https://github.com/astral-sh/ruff/releases/tag/0.9.5\"\u003edeprecated in Ruff v0.9.5\u003c/a\u003e, has been removed. The Ruff VS Code extension now always uses the native language server; \u003ccode\u003eruff.nativeServer\u003c/code\u003e is deprecated and ignored. See the \u003ca href=\"https://docs.astral.sh/ruff/editors/migration/\"\u003emigration guide\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStabilization\u003c/h3\u003e\n\u003cp\u003eThe following rules have been stabilized and are no longer in preview:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-mismatch\"\u003e\u003ccode\u003elazy-import-mismatch\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID254\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-immediately-resolved\"\u003e\u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID255\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/os-path-commonprefix\"\u003e\u003ccode\u003eos-path-commonprefix\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eRUF071\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed.\nmacOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows\nexecutables have timestamped Authenticode signatures from Azure Artifact Signing. This enables\nverification of the release publisher and binary integrity, supports publisher-based allowlisting,\nand should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through\n\u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or\n\u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When\nchecking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15\ninstead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules\n(\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and\n\u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default,\nwhile \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e\n(\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and\nincludes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e\nnow recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b27c1ccfaa230fb195855f5cf3404a21e3379cd\"\u003e\u003ccode\u003e5b27c1c\u003c/code\u003e\u003c/a\u003e Bump version to 0.17.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29259\"\u003e#29259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8f362bf4cb5dbad095ac416602496705d41fc843\"\u003e\u003ccode\u003e8f362bf\u003c/code\u003e\u003c/a\u003e Integrate vendored Unicode names into Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/88a50d695c1142294bb4c780fad47d3306173885\"\u003e\u003ccode\u003e88a50d6\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode loose matching\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/276832aa91f2086a6ec880884fcdd987991cddf2\"\u003e\u003ccode\u003e276832a\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode alias normalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/26911caa2800758779965510d2f222b438abbb38\"\u003e\u003ccode\u003e26911ca\u003c/code\u003e\u003c/a\u003e Vendor unicode_names2 from upstream\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/27e3797508d1a7ad69e4900d51e38d78785aaf73\"\u003e\u003ccode\u003e27e3797\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eruff\u003c/code\u003e] Stabilize \u003ccode\u003eos-path-commonprefix\u003c/code\u003e (\u003ccode\u003eRUF071\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28764\"\u003e#28764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bbb52c1267cf39aba67e54c2b5800878d23073a9\"\u003e\u003ccode\u003ebbb52c1\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e (`TID255...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5aa9cbd3a49d32b24ac21fa7797ca87a330792a2\"\u003e\u003ccode\u003e5aa9cbd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-mismatch\u003c/code\u003e (\u003ccode\u003eTID254\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28760\"\u003e#28760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dba1bc893aedfeea2064c4e8e764135f0d44dc3f\"\u003e\u003ccode\u003edba1bc8\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (`...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef23c9c39eb3029bab0139c3ea7ae6d95c4131e0\"\u003e\u003ccode\u003eef23c9c\u003c/code\u003e\u003c/a\u003e Update default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28792\"\u003e#28792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.6...0.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug[watchdog]` from 3.1.8 to 3.1.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug[watchdog]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.9\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.9 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.9/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.9/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-9\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-9\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/46?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/46?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names with empty ADS markers on NTFS. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-g6x2-hccm-hh4m\"\u003ehttps://github.com/pallets/werkzeug/security/advisories/GHSA-g6x2-hccm-hh4m\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eProfilerMiddleware\u003c/code\u003e uses \u003ccode\u003eprofiling.tracing\u003c/code\u003e on Python 3.15. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3207\"\u003e#3207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003euri_to_iri\u003c/code\u003e and \u003ccode\u003eiri_to_uri\u003c/code\u003e preserve empty username, password, and port 0. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3189\"\u003e#3189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003eparse_options_header\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3231\"\u003e#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003eparse_etags\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3231\"\u003e#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003eparse_cookie\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3231\"\u003e#3231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eget_host\u003c/code\u003e also checks that the port is in the valid range. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3236\"\u003e#3236\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eint\u003c/code\u003e URL converter returns a 404 instead of 500 error when the value is longer than \u003ccode\u003esys.get_int_max_str_digits()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3237\"\u003e#3237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove debugger PIN generation from cgroup data inside Podman. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3245\"\u003e#3245\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eAuthorization\u003c/code\u003e parsing \u003ccode\u003ebasic\u003c/code\u003e auth disallows non-base64 characters.  \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eapplication/x-www-form-urlencoded\u003c/code\u003e form data is no longer limited to \u003ccode\u003emax_form_memory_size\u003c/code\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/christ-ph/projetFinal/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/christ-ph%2FprojetFinal/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"}},{"old_version":"0.53.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-13T15:29:11.000Z","version_change":"0.53.0 → 0.54.0","issue":{"uuid":"5833096676","node_id":"PR_kwDOQuAMac8AAAABINGWGQ","number":801,"state":"closed","title":"Bump the python-minor-patch group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-16T12:36:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-13T15:29:11.000Z","updated_at":"2026-10-16T12:36:46.000Z","time_to_close":248853,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-minor-patch","update_count":17,"packages":[{"name":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.16.9","new_version":"0.17.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pydantic","old_version":"2.13.5","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"asyncpg","old_version":"0.31.0","new_version":"0.32.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"pgvector","old_version":"0.5.0","new_version":"0.5.1","repository_url":"https://github.com/pgvector/pgvector-python"},{"name":"aiohttp","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"cryptography","old_version":"50.0.1","new_version":"50.0.2","repository_url":"https://github.com/pyca/cryptography"},{"name":"langgraph","old_version":"1.2.12","new_version":"1.2.14","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langchain","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.6.6","new_version":"1.7.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"asyncssh","old_version":"2.24.0","new_version":"2.24.1","repository_url":"https://github.com/ronf/asyncssh"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"ansible-core","old_version":"2.21.4","new_version":"2.21.5","repository_url":"https://github.com/ansible/ansible"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.9` | `0.17.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.143.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.5` | `2.14.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.31.0` | `0.32.0` |\n| [pgvector](https://github.com/pgvector/pgvector-python) | `0.5.0` | `0.5.1` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.3` | `3.14.5` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.1` | `50.0.2` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.12` | `1.2.14` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.4.2` | `1.4.4` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.6.6` | `1.7.0` |\n| [asyncssh](https://github.com/ronf/asyncssh) | `2.24.0` | `2.24.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.54` | `2.1.4` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.53.0` | `0.54.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [ansible-core](https://github.com/ansible/ansible) | `2.21.4` | `2.21.5` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n\n\nUpdates `pytest-mock` from 3.15.1 to 3.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/604\"\u003e#604\u003c/a\u003e: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/611\"\u003e#611\u003c/a\u003e: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/606\"\u003e#606\u003c/a\u003e: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/547\"\u003e#547\u003c/a\u003e: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/147\"\u003e#147\u003c/a\u003e: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#604](https://github.com/pytest-dev/pytest-mock/issues/604) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/604\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#611](https://github.com/pytest-dev/pytest-mock/issues/611) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/611\u0026gt;\u003c/code\u003e_: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#606](https://github.com/pytest-dev/pytest-mock/issues/606) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/606\u0026gt;\u003c/code\u003e_: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#547](https://github.com/pytest-dev/pytest-mock/issues/547) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/547\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#147](https://github.com/pytest-dev/pytest-mock/issues/147) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/147\u0026gt;\u003c/code\u003e_: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f3b531f93c6d9837edc87ea1a6f4324dc9a2cdf3\"\u003e\u003ccode\u003ef3b531f\u003c/code\u003e\u003c/a\u003e Release 3.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/71ed67309520be160f3e100368705b58758d237a\"\u003e\u003ccode\u003e71ed673\u003c/code\u003e\u003c/a\u003e Fix duplicate_iterators for async spies (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/0797e3d303cc5bbe0a3514b0625f7aeb3fa350b0\"\u003e\u003ccode\u003e0797e3d\u003c/code\u003e\u003c/a\u003e Fix async assertion argument introspection (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/611\"\u003e#611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e24c334d573cfbf6989a31f4e3346676d9d31598\"\u003e\u003ccode\u003ee24c334\u003c/code\u003e\u003c/a\u003e docs: import os in the opening usage example (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/9e7eb7b59cde362c1c8ace2d18ca00fe2d7a1cd1\"\u003e\u003ccode\u003e9e7eb7b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/613\"\u003e#613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/445fd4d3daa8ed4c6d5428a77880da2e03d2f721\"\u003e\u003ccode\u003e445fd4d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/a8bd0b147afdf6b4bb1a1a3c3c088f32b0240091\"\u003e\u003ccode\u003ea8bd0b1\u003c/code\u003e\u003c/a\u003e Honour resetall() arguments for non-callable mocks (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/606\"\u003e#606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/6559fdfd5b67f096423e604a3a5a7045db2486a0\"\u003e\u003ccode\u003e6559fdf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/466d026254c949a8fbba8626b894308827be81cf\"\u003e\u003ccode\u003e466d026\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/164defebde25bc31d53a2a64943c5c9aac43b57e\"\u003e\u003ccode\u003e164defe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/603\"\u003e#603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.15.1...v3.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.9 to 0.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through \u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or \u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15 instead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules (\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default, while \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and includes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e now recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003efull\u003c/code\u003e output format now shows unsafe fixes and suggestions requiring manual review, regardless of the \u003ca href=\"https://docs.astral.sh/ruff/settings/#unsafe-fixes\"\u003e\u003ccode\u003eunsafe-fixes\u003c/code\u003e\u003c/a\u003e setting. Actually applying unsafe fixes still requires explicit opt-in.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove the Python dependency from conda-forge builds (\u003ca href=\"https://redirect.github.com/conda-forge/ruff-feedstock/pull/361\"\u003econda-forge/ruff-feedstock#361\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe conda-forge build no longer depends on Python, now supports linux-riscv64, win-arm64, and linux-ppc64le platforms, and now includes shell completions. However, no longer depending on Python means that \u003ccode\u003epython -m ruff\u003c/code\u003e and \u003ccode\u003eimport ruff\u003c/code\u003e will no longer work. Use \u003ccode\u003eruff\u003c/code\u003e directly from \u003ccode\u003ePATH\u003c/code\u003e instead. PyPI installations and those from the standalone installer are unaffected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove support for ruff-lsp (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28750\"\u003e#28750\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSupport for \u003ccode\u003eruff-lsp\u003c/code\u003e, the legacy Python language server \u003ca href=\"https://github.com/astral-sh/ruff/releases/tag/0.9.5\"\u003edeprecated in Ruff v0.9.5\u003c/a\u003e, has been removed. The Ruff VS Code extension now always uses the native language server; \u003ccode\u003eruff.nativeServer\u003c/code\u003e is deprecated and ignored. See the \u003ca href=\"https://docs.astral.sh/ruff/editors/migration/\"\u003emigration guide\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStabilization\u003c/h3\u003e\n\u003cp\u003eThe following rules have been stabilized and are no longer in preview:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-mismatch\"\u003e\u003ccode\u003elazy-import-mismatch\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID254\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/lazy-import-immediately-resolved\"\u003e\u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eTID255\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://docs.astral.sh/ruff/rules/os-path-commonprefix\"\u003e\u003ccode\u003eos-path-commonprefix\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eRUF071\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.17.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-09.\u003c/p\u003e\n\u003cp\u003eThe executables in our macOS and Windows release archives and \u003ccode\u003eruff\u003c/code\u003e wheels are now code-signed.\nmacOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows\nexecutables have timestamped Authenticode signatures from Azure Artifact Signing. This enables\nverification of the release publisher and binary integrity, supports publisher-based allowlisting,\nand should reduce security warnings and antivirus false positives.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28792\"\u003e#28792\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through\n\u003ca href=\"https://docs.astral.sh/ruff/settings/#target-version\"\u003e\u003ccode\u003etarget-version\u003c/code\u003e\u003c/a\u003e or\n\u003ca href=\"https://docs.astral.sh/ruff/configuration/#inferring-the-python-version\"\u003e\u003ccode\u003erequires-python\u003c/code\u003e\u003c/a\u003e. When\nchecking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15\ninstead of 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate the default rule set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28786\"\u003e#28786\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eSeveral of the \u003ccode\u003eflake8-datetimez\u003c/code\u003e rules\n(\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/\"\u003e\u003ccode\u003eDTZ001\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/\"\u003e\u003ccode\u003eDTZ005\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/\"\u003e\u003ccode\u003eDTZ006\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/\"\u003e\u003ccode\u003eDTZ007\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-today/\"\u003e\u003ccode\u003eDTZ011\u003c/code\u003e\u003c/a\u003e,\n\u003ca href=\"https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/\"\u003e\u003ccode\u003eDTZ012\u003c/code\u003e\u003c/a\u003e, and\n\u003ca href=\"https://docs.astral.sh/ruff/rules/datetime-min-max/\"\u003e\u003ccode\u003eDTZ901\u003c/code\u003e\u003c/a\u003e) are no longer enabled by default,\nwhile \u003ca href=\"https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/\"\u003e\u003ccode\u003eundefined-local-with-nested-import-star-usage\u003c/code\u003e\u003c/a\u003e\n(\u003ccode\u003eF406\u003c/code\u003e), which corresponds to a syntax error, is now enabled by default.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate Rust crate quick-junit to 0.8.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27295\"\u003e#27295\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eJUnit output now uses a \u003ccode\u003eskipped\u003c/code\u003e attribute instead of \u003ccode\u003edisabled\u003c/code\u003e on \u003ccode\u003e\u0026lt;testsuite\u0026gt;\u003c/code\u003e elements and\nincludes a \u003ccode\u003eskipped\u003c/code\u003e attribute on the root \u003ccode\u003e\u0026lt;testsuites\u0026gt;\u003c/code\u003e element.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (\u003ccode\u003eICN001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28790\"\u003e#28790\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Unicode dummy variable names (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28722\"\u003e#28722\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThe default \u003ca href=\"https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx\"\u003e\u003ccode\u003elint.dummy-variable-rgx\u003c/code\u003e\u003c/a\u003e\nnow recognizes underscore-prefixed Unicode names, such as \u003ccode\u003e_次\u003c/code\u003e, as dummy variables.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate to Unicode 17 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21229\"\u003e#21229\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28784\"\u003e#28784\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eRuff now uses Unicode 17 data for identifier normalization and named character escapes (\u003ccode\u003e\u0026quot;\\N{...}\u0026quot;\u003c/code\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAlways show unsafe and display-only fixes in the CLI (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27810\"\u003e#27810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b27c1ccfaa230fb195855f5cf3404a21e3379cd\"\u003e\u003ccode\u003e5b27c1c\u003c/code\u003e\u003c/a\u003e Bump version to 0.17.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29259\"\u003e#29259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8f362bf4cb5dbad095ac416602496705d41fc843\"\u003e\u003ccode\u003e8f362bf\u003c/code\u003e\u003c/a\u003e Integrate vendored Unicode names into Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/88a50d695c1142294bb4c780fad47d3306173885\"\u003e\u003ccode\u003e88a50d6\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode loose matching\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/276832aa91f2086a6ec880884fcdd987991cddf2\"\u003e\u003ccode\u003e276832a\u003c/code\u003e\u003c/a\u003e Revert upstream Unicode alias normalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/26911caa2800758779965510d2f222b438abbb38\"\u003e\u003ccode\u003e26911ca\u003c/code\u003e\u003c/a\u003e Vendor unicode_names2 from upstream\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/27e3797508d1a7ad69e4900d51e38d78785aaf73\"\u003e\u003ccode\u003e27e3797\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eruff\u003c/code\u003e] Stabilize \u003ccode\u003eos-path-commonprefix\u003c/code\u003e (\u003ccode\u003eRUF071\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28764\"\u003e#28764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bbb52c1267cf39aba67e54c2b5800878d23073a9\"\u003e\u003ccode\u003ebbb52c1\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-immediately-resolved\u003c/code\u003e (`TID255...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5aa9cbd3a49d32b24ac21fa7797ca87a330792a2\"\u003e\u003ccode\u003e5aa9cbd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Stabilize \u003ccode\u003elazy-import-mismatch\u003c/code\u003e (\u003ccode\u003eTID254\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28760\"\u003e#28760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dba1bc893aedfeea2064c4e8e764135f0d44dc3f\"\u003e\u003ccode\u003edba1bc8\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Add \u003ccode\u003edatetime as dt\u003c/code\u003e as a conventional alias (`...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef23c9c39eb3029bab0139c3ea7ae6d95c4131e0\"\u003e\u003ccode\u003eef23c9c\u003c/code\u003e\u003c/a\u003e Update default and latest Python versions for 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28792\"\u003e#28792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.9...0.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.141.1 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.141.1...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.5 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1 2026-10-11\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePerformance\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid Python tuple allocation during model fields validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13955\"\u003e#13955\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unnecessary extra dict allocation in model validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13956\"\u003e#13956\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003earguments-v3\u003c/code\u003e schema with variadic keywords by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13954\"\u003e#13954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13964\"\u003e#13964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13967\"\u003e#13967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13972\"\u003e#13972\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13973\"\u003e#13973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13978\"\u003e#13978\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73\"\u003e\u003ccode\u003eb2212c7\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531\"\u003e\u003ccode\u003e968fb2b\u003c/code\u003e\u003c/a\u003e Fix docs conversion table\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091\"\u003e\u003ccode\u003e6adc8b3\u003c/code\u003e\u003c/a\u003e Support named tuples in \u003ccode\u003eSequence\u003c/code\u003e validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db\"\u003e\u003ccode\u003e7637fbc\u003c/code\u003e\u003c/a\u003e Reject out-of-range int inputs for \u003ccode\u003etimedelta\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c\"\u003e\u003ccode\u003edfdbfcb\u003c/code\u003e\u003c/a\u003e Enforce the \u003ccode\u003emax_digits\u003c/code\u003e whole-digits limit in the Python \u003ccode\u003eDecimal\u003c/code\u003e validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886\"\u003e\u003ccode\u003ee2456d3\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003eclosed\u003c/code\u003e and \u003ccode\u003eextra_items\u003c/code\u003e via inheritance in \u003ccode\u003eTypedDict\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f\"\u003e\u003ccode\u003e317655d\u003c/code\u003e\u003c/a\u003e Harden CI security\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5\"\u003e\u003ccode\u003e3ba1dd4\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eTypeError\u003c/code\u003e on \u003ccode\u003eForwardRef\u003c/code\u003e on Python 3.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26\"\u003e\u003ccode\u003e43681ab\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003esamuelcolvin/check-python-version\u003c/code\u003e action to v5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921\"\u003e\u003ccode\u003ed6bc53a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary extra dict allocation in model validation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.31.0 to 0.32.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.32.0\u003c/h2\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1367\"\u003e#1367\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 1b118464 and 58c0c595)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 8d2a5aed)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake pool \u003ccode\u003emin_size\u003c/code\u003e a maintained connection floor and add \u003ccode\u003einit_size\u003c/code\u003e to\ncontrol the number of connections opened at startup (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e).\nIdle connections at or below \u003ccode\u003emin_size\u003c/code\u003e are retained, and closed connections\nare replaced in the background. \u003ccode\u003einit_size\u003c/code\u003e defaults to \u003ccode\u003emin_size\u003c/code\u003e.\nTo preserve the previous behavior, where the pool could drain to zero,\nreplace \u003ccode\u003emin_size=N\u003c/code\u003e with \u003ccode\u003einit_size=N, min_size=0\u003c/code\u003e.\n(by \u003ca href=\"https://github.com/shatilov-diman\"\u003e\u003ccode\u003e@​shatilov-diman\u003c/code\u003e\u003c/a\u003e in 67a1cbc5)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003ehashlib.pbkdf2_hmac()\u003c/code\u003e for faster SCRAM password derivation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1359\"\u003e#1359\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/twelfthlabor\"\u003e\u003ccode\u003e@​twelfthlabor\u003c/code\u003e\u003c/a\u003e in 00319a9b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse the statement cache for \u003ccode\u003ecopy_records_to_table()\u003c/code\u003e introspection (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1360\"\u003e#1360\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/matemax\"\u003e\u003ccode\u003e@​matemax\u003c/code\u003e\u003c/a\u003e in dd058652)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClean up connections rejected by \u003ccode\u003etarget_session_attrs\u003c/code\u003e immediately so an\nunresponsive rejected host cannot delay the selected connection, and cleanup\ntasks cannot outlive the event loop. Rejected connections are aborted without\nwaiting for a graceful disconnect; servers may log \u0026quot;unexpected EOF on client\nconnection\u0026quot; if the Terminate message is not delivered before the transport\ncloses.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a connection pool deadlock when releasing a connection after a protocol\nabort (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1324\"\u003e#1324\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/pchaseh\"\u003e\u003ccode\u003e@​pchaseh\u003c/code\u003e\u003c/a\u003e in 4a83cc2f)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHonor \u003ccode\u003eConnection.close(timeout=...)\u003c/code\u003e while waiting for a pending\ncancellation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1361\"\u003e#1361\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in c06bcb4d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent stuck cancellation from blocking connection teardown or pool release\nby bounding cancellation with the command or release timeout (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1370\"\u003e#1370\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 4cf02203)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePreserve the server error when the connection closes mid-operation (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1369\"\u003e#1369\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/RitiGrover\"\u003e\u003ccode\u003e@​RitiGrover\u003c/code\u003e\u003c/a\u003e in 6c8f1a7a)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix COPY cleanup when a records generator raises, preserving the original\nexception and avoiding protocol desynchronization and stalled rollback (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1358\"\u003e#1358\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/CodingCossack\"\u003e\u003ccode\u003e@​CodingCossack\u003c/code\u003e\u003c/a\u003e in fdc6bc8f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/d701e11a392b0e3b93b7af4a05c1cdadddf75f8f\"\u003e\u003ccode\u003ed701e11\u003c/code\u003e\u003c/a\u003e asyncpg v0.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b04f8f299dd05c380e3c14d32bd1c881063c2b58\"\u003e\u003ccode\u003eb04f8f2\u003c/code\u003e\u003c/a\u003e Bump to macOS 26 in runners, set deployment target to 11 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1384\"\u003e#1384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/3934d77bfb558527a3708be686b6e0e7f90ce2b3\"\u003e\u003ccode\u003e3934d77\u003c/code\u003e\u003c/a\u003e tests: Capture expected pool retry warnings during role changes (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1383\"\u003e#1383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/2c3750179e0289b2fd03dc2baa8e87f75afa174b\"\u003e\u003ccode\u003e2c37501\u003c/code\u003e\u003c/a\u003e tests: Avoid DeprecationWarning when settings up uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1382\"\u003e#1382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/b7eea79c920832d353073951c28aca687d532b4a\"\u003e\u003ccode\u003eb7eea79\u003c/code\u003e\u003c/a\u003e Test pool min_size backoff on target attribute mismatch (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1381\"\u003e#1381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/46dda9139700dc18e63ae638021edfaddf0bf3a4\"\u003e\u003ccode\u003e46dda91\u003c/code\u003e\u003c/a\u003e Terminate rejected target_session_attrs candidates before returning (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1380\"\u003e#1380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/8d2a5aedbf36c6116212454ebeb8c242140f76e5\"\u003e\u003ccode\u003e8d2a5ae\u003c/code\u003e\u003c/a\u003e Support PostgreSQL 19 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1379\"\u003e#1379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/58c0c595272cb91b81be82620c479ab5431b4d70\"\u003e\u003ccode\u003e58c0c59\u003c/code\u003e\u003c/a\u003e Bump uvloop (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1378\"\u003e#1378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/67a1cbc5eb4a6aa5df140b27f48488921521d6f7\"\u003e\u003ccode\u003e67a1cbc\u003c/code\u003e\u003c/a\u003e Make pool min_size a maintained connection floor (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1323\"\u003e#1323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/25aaaf5412cf868388d076f359d12feb2479a4bb\"\u003e\u003ccode\u003e25aaaf5\u003c/code\u003e\u003c/a\u003e fix: allow cursors in external transactions (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.31.0...v0.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pgvector` from 0.5.0 to 0.5.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pgvector/pgvector-python/blob/master/CHANGELOG.md\"\u003epgvector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.5.1 (2026-10-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed error with non-canonical SciPy sparse arrays\u003c/li\u003e\n\u003cli\u003eFixed error with SciPy sparse arrays with explicit zeros\u003c/li\u003e\n\u003cli\u003eFixed error with \u003ccode\u003eBit\u003c/code\u003e constructor for NumPy 1.24-1.26\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/5275164edb3a2847d4a5aec1af5ae90f7dc47b53\"\u003e\u003ccode\u003e5275164\u003c/code\u003e\u003c/a\u003e Version bump to 0.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/474522bafad1385c4bdda439700f39226b309ec0\"\u003e\u003ccode\u003e474522b\u003c/code\u003e\u003c/a\u003e Improved validation for bit strings - fixes \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/161\"\u003e#161\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/90056379c41574db1c0df367f9e02e79644ed995\"\u003e\u003ccode\u003e9005637\u003c/code\u003e\u003c/a\u003e Updated changelog [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/f3a05b42a9161f6f30fec9e31e161a21a2e2f3d2\"\u003e\u003ccode\u003ef3a05b4\u003c/code\u003e\u003c/a\u003e Updated changelog [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/f4dde1961e81db596660cdc619eb7609667bb9b3\"\u003e\u003ccode\u003ef4dde19\u003c/code\u003e\u003c/a\u003e Fixed handling of duplicates for SciPy sparse arrays - fixes \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/162\"\u003e#162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/c451fb017d479d9ce9af7e08c4ffdd06f7210bc4\"\u003e\u003ccode\u003ec451fb0\u003c/code\u003e\u003c/a\u003e Improved code consistency [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/63f5a483777209e30420e02da13abe46cbc4f2af\"\u003e\u003ccode\u003e63f5a48\u003c/code\u003e\u003c/a\u003e Fixed typo [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/cd18c3f1074e08a9bbe5d72c98f5c838e369caab\"\u003e\u003ccode\u003ecd18c3f\u003c/code\u003e\u003c/a\u003e Fixed error with SciPy sparse arrays with zeros\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/d3c5d4b780730472a69420ba0b6607bd58d13e45\"\u003e\u003ccode\u003ed3c5d4b\u003c/code\u003e\u003c/a\u003e Improved performance by checking has_canonical_format [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pgvector/pgvector-python/commit/fd74f7842cc28ef5030ba7c9627e1ce66148234e\"\u003e\u003ccode\u003efd74f78\u003c/code\u003e\u003c/a\u003e Fixed error with unordered SciPy sparse arrays - resolves \u003ca href=\"https://redirect.github.com/pgvector/pgvector-python/issues/160\"\u003e#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pgvector/pgvector-python/compare/v0.5.0...v0.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp` from 3.14.3 to 3.14.5\nUpdates `cryptography` from 50.0.1 to 50.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e50.0.2 - 2026-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 4.0.3.\n* Added ``abi3.abi3t`` wheels for free-threaded CPython 3.15 and later.\n* Updated to PyO3 0.29.2, which fixes building ``cryptography`` on Cygwin and\n  MSYS2.\n\u003cp\u003e.. _v50-0-1:\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4dda5c7fe4ae71b8925f2551910a0ef959df9c7a\"\u003e\u003ccode\u003e4dda5c7\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump for 50.0.2 release + changelog (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15733\"\u003e#15733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/70c881cd7ea97d38df09f57c1117470cd1a5a2f7\"\u003e\u003ccode\u003e70c881c\u003c/code\u003e\u003c/a\u003e [50.0.x] Bump pyo3 to 0.29.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15731\"\u003e#15731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/a8c45c449b8d29908a14561afd45fee8bf27d044\"\u003e\u003ccode\u003ea8c45c4\u003c/code\u003e\u003c/a\u003e [50.0.x] Build abi3.abi3t wheels for CPython 3.15+ (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15496\"\u003e#15496\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/15732\"\u003e#15732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/50.0.1...50.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.12 to 1.2.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.14\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.14 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9215\"\u003e#9215\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.13\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.12\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(langgraph): fork before replaying an update checkpoint the thread moved past (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9170\"\u003e#9170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): keep an update_state on an older checkpoint out of its other branches (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9165\"\u003e#9165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): keep DeltaChannel counters on every update_state path (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9142\"\u003e#9142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(langgraph): 1.2.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9205\"\u003e#9205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): don't walk history for a DeltaChannel that was never written (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9141\"\u003e#9141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): don't replay an abandoned branch into a DeltaChannel fork (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8548\"\u003e#8548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump notebook from 7.5.6 to 7.5.7 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9168\"\u003e#9168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): hydrate subgraph delta channels with the caller-resolved saver (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8538\"\u003e#8538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(langgraph): stop reporting answered interrupts in get_state (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9103\"\u003e#9103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9155\"\u003e#9155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the minor-and-patch group in /libs/checkpoint-conformance with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9145\"\u003e#9145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/sdk-py with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9149\"\u003e#9149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump tornado from 6.5.8 to 6.5.9 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9160\"\u003e#9160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260712 to 2.33.0.20260906 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9156\"\u003e#9156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump pyjwt from 2.15.0 to 2.15.1 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9140\"\u003e#9140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump urllib3 from 2.7.0 to 2.8.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9138\"\u003e#9138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump pyjwt from 2.14.0 to 2.15.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9139\"\u003e#9139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump pyjwt from 2.13.0 to 2.14.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9126\"\u003e#9126\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/70dd64065bffaa3b6ab61a33f1f020fb54db8efa\"\u003e\u003ccode\u003e70dd640\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.14 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9215\"\u003e#9215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/55b0e36c51d2922b11640b980fcfca1064243a96\"\u003e\u003ccode\u003e55b0e36\u003c/code\u003e\u003c/a\u003e release(sdk-py): 0.4.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9214\"\u003e#9214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d89c7e100ec6fc1512544d23b0a7c5169699ef3e\"\u003e\u003ccode\u003ed89c7e1\u003c/code\u003e\u003c/a\u003e fix(sdk-py): percent-encode thread_id and assistant_id in thread stream reque...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/2d942085e214ef6b99b6f54ed4d544a7c7c5ac56\"\u003e\u003ccode\u003e2d94208\u003c/code\u003e\u003c/a\u003e fix(langgraph): fork before replaying an update checkpoint the thread moved p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/456e2b1acc67c8c6c13bbc0e0ca8ba7e11503d17\"\u003e\u003ccode\u003e456e2b1\u003c/code\u003e\u003c/a\u003e fix(langgraph): keep an update_state on an older checkpoint out of its other ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/1b84cb08733a2a0a102ed19845bf20511dcc6535\"\u003e\u003ccode\u003e1b84cb0\u003c/code\u003e\u003c/a\u003e fix(langgraph): keep DeltaChannel counters on every update_state path (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9142\"\u003e#9142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/8e15e0d0bcffa6d3d5a776206e6e8163a3595463\"\u003e\u003ccode\u003e8e15e0d\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.13 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9205\"\u003e#9205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/524b320e30a31d2660ee1a7e9b312882fe4a6c08\"\u003e\u003ccode\u003e524b320\u003c/code\u003e\u003c/a\u003e fix(langgraph): don't walk history for a DeltaChannel that was never written ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/9a0394d88b2211f299dcd69df92db3480c69ee61\"\u003e\u003ccode\u003e9a0394d\u003c/code\u003e\u003c/a\u003e fix(langgraph): don't replay an abandoned branch into a DeltaChannel fork (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8\"\u003e#8\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7dc9195e4141c8fbd8118581b3dd61d158628aa8\"\u003e\u003ccode\u003e7dc9195\u003c/code\u003e\u003c/a\u003e chore(deps): bump notebook from 7.5.6 to 7.5.7 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/9168\"\u003e#9168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.12...1.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain` from 1.4.2 to 1.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-fireworks==1.4.4\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-fireworks==1.4.3\u003c/p\u003e\n\u003cp\u003erelease(fireworks): 1.4.4 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38753\"\u003e#38753\u003c/a\u003e)\nfix(fireworks): report cached prompt token usage (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38751\"\u003e#38751\u003c/a\u003e)\nchore(deps): refresh lockfiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38746\"\u003e#38746\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38663\"\u003e#38663\u003c/a\u003e)\nchore: bump pytest from 9.1.0 to 9.1.1 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38594\"\u003e#38594\u003c/a\u003e)\nchore: bump langsmith from 0.8.18 to 0.9.5 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38595\"\u003e#38595\u003c/a\u003e)\ndocs(fireworks): clarify prompt-cache session affinity guidance (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38522\"\u003e#38522\u003c/a\u003e)\ntest(fireworks): cover request-level extra headers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38518\"\u003e#38518\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.4.4\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.4.3\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.4.4 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41163\"\u003e#41163\u003c/a\u003e)\nfix(langchain): (SummarizationMiddleware) retry summary step on context overflow (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41159\"\u003e#41159\u003c/a\u003e)\nchore(deps): bump fsspec from 2026.6.0 to 2026.9.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41097\"\u003e#41097\u003c/a\u003e)\nchore(deps): bump multidict from 6.7.0 to 6.9.1 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41075\"\u003e#41075\u003c/a\u003e)\nchore(deps): bump langgraph-sdk from 0.4.2 to 0.4.4 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41074\"\u003e#41074\u003c/a\u003e)\nchore(deps): bump fsspec from 2025.10.0 to 2026.6.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41071\"\u003e#41071\u003c/a\u003e)\nchore(langchain): bump minimum FastMCP to 4.0.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/41054\"\u003e#41054\u003c/a\u003e)\nchore(deps): bump pyjwt from 2.13.0 to 2.15.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40939\"\u003e#40939\u003c/a\u003e)\nchore(deps): bump urllib3 from 2.7.0 to 2.8.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40943\"\u003e#40943\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-fireworks==1.4.3\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-fireworks==1.4.2\u003c/p\u003e\n\u003cp\u003erelease(fireworks): 1.4.3\nchore: bump vcrpy from 8.1.1 to 8.2.1 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38314\"\u003e#38314\u003c/a\u003e)\nchore: bump langsmith from 0.8.16 to 0.8.18 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38313\"\u003e#38313\u003c/a\u003e)\nchore: bump langsmith from 0.8.14 to 0.8.16 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38235\"\u003e#38235\u003c/a\u003e)\nchore: bump pytest from 9.0.3 to 9.1.0 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38233\"\u003e#38233\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38210\"\u003e#38210\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38191\"\u003e#38191\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38133\"\u003e#38133\u003c/a\u003e)\ndocs: refresh \u003ccode\u003eREADME\u003c/code\u003e installation and resources (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38119\"\u003e#38119\u003c/a\u003e)\nrelease(core): 1.4.7 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38111\"\u003e#38111\u003c/a\u003e)\nfix(core,partners): rename package version trace metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38110\"\u003e#38110\u003c/a\u003e)\nstyle(core,langchain,langchain-classic,partners): replace double backticks in docstrings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38095\"\u003e#38095\u003c/a\u003e)\nchore: bump langsmith from 0.8.9 to 0.8.14 in /libs/partners/fireworks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38093\"\u003e#38093\u003c/a\u003e)\nrelease(core): 1.4.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38061\"\u003e#38061\u003c/a\u003e)\nfeat(core,partners): add package version tracking to tracing metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/35295\"\u003e#35295\u003c/a\u003e)\nchore(infra): bump mypy to 2.1 and unify type-check config across the monorepo (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/36470\"\u003e#36470\u003c/a\u003e)\nfeat(standard-tests): validate tool call chunks during streaming (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issue...\n\n_Description has been truncated_","html_url":"https://github.com/vladmesh/codegen_orchestrator/pull/801","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladmesh%2Fcodegen_orchestrator/issues/801","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/801/packages"}},{"old_version":"0.46.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-13T12:41:57.000Z","version_change":"0.46.0 → 0.54.0","issue":{"uuid":"5830494297","node_id":"PR_kwDOLjyWQ88AAAABILAgqg","number":13,"state":"open","title":"deps(python): bump the python-dependencies group across 1 directory with 21 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-13T12:41:57.000Z","updated_at":"2026-10-13T12:42:00.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(python): bump","group_name":"python-dependencies","update_count":21,"packages":[{"name":"anyio","old_version":"4.13.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"dnspython","old_version":"2.8.0","new_version":"2.9.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"flask-jwt-extended","old_version":"4.7.1","new_version":"4.7.4","repository_url":"https://github.com/vimalloc/flask-jwt-extended"},{"name":"idna","old_version":"3.13","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"prometheus-client","old_version":"0.25.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.12.1","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pymongo","old_version":"4.17.0","new_version":"4.18.3","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.4","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"starlette","old_version":"1.0.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"werkzeug","old_version":"3.1.8","new_version":"3.1.9","repository_url":"https://github.com/pallets/werkzeug"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.15.1` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.7.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.2` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.8.0` | `2.9.0` |\n| [flask-jwt-extended](https://github.com/vimalloc/flask-jwt-extended) | `4.7.1` | `4.7.4` |\n| [idna](https://github.com/kjd/idna) | `3.13` | `3.20` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.25.0` | `0.26.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.1` | `2.15.1` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.17.0` | `4.18.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.4` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.0.0` | `1.7.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.54.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.8` | `3.1.9` |\n\n\nUpdates `anyio` from 4.13.0 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asgiref` from 3.11.1 to 3.12.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.12.1 (2026-07-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRestored the previous SyncToAsync.\u003cstrong\u003ecall\u003c/strong\u003e internal code shape, which was\nrelied on by some APM services. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/572\"\u003e#572\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNote, this change was available whilst maintaining the underlying fix (from\n\u003ca href=\"https://redirect.github.com/django/asgiref/issues/564\"\u003e#564\u003c/a\u003e). It does not constitute an API stability promise. Ideally APMs are\n\u003cem\u003enot\u003c/em\u003e monkey patching internal APIs, and future changes will be made here if\nneeded.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12.0 (2026-07-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eAsyncToSync\u003c/code\u003e no longer captures the running event loop on\ninstantiation. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/562\"\u003e#562\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis resolves a series of deadlocks that users experienced after asgiref 3.9.0,\nparticularly with pytest-asyncio. pytest-asyncio stops the event loop between\ntests, and long-running unawaited futures could find themselves trying to\nschedule work onto a stopped loop, and so would never complete. Ideally, code\nshould be structured to await long-running futures before returning, but this\nchange should help users experiencing issues here.\u003c/p\u003e\n\u003cp\u003eThe loop is now resolved when the callable is invoked rather than when it is\ncreated. If \u003ccode\u003easync_to_sync\u003c/code\u003e is called from within \u003ccode\u003esync_to_async\u003c/code\u003e, the\nparent event loop is still used, as before.\u003c/p\u003e\n\u003cp\u003eThe possibility of deadlock therefore remains in some nested patterns. For\nexample, an async function may call a long-running \u003ccode\u003esync_to_async\u003c/code\u003e function\nthat itself uses \u003ccode\u003easync_to_sync\u003c/code\u003e; if the outer function returns before the\nsync future completes, the parent event loop may already be stopped, and the\nnested calls cannot be driven to completion.\u003c/p\u003e\n\u003cp\u003eThis is not a bug in asgiref — the same patterns deadlock in plain asyncio. As\nabove, restructure your code to await the \u003ccode\u003esync_to_async\u003c/code\u003e future before\nexiting the driving coroutine.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an event loop deadlock when exiting \u003ccode\u003eThreadSensitiveContext\u003c/code\u003e\nwhile its executor thread was still blocked waiting on the event loop.\n(\u003ca href=\"https://redirect.github.com/django/asgiref/issues/535\"\u003e#535\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for EOL Python 3.9.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eStatelessServer.run()\u003c/code\u003e failing on Python 3.14, where\n\u003ccode\u003easyncio.get_event_loop()\u003c/code\u003e no longer creates an event loop if none\nexists. It now uses \u003ccode\u003easyncio.run()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/559\"\u003e#559\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eLocal\u003c/code\u003e leaking data between unrelated sync threads when\n\u003ccode\u003esys.flags.thread_inherit_context\u003c/code\u003e is enabled (Python 3.14+), so a newly\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/ef9d4b8b371cf8a7bb63dea3d0fdc60923e9e081\"\u003e\u003ccode\u003eef9d4b8\u003c/code\u003e\u003c/a\u003e Releasing 3.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/34fba6328f67a753d814c280811fd34094bd1f6c\"\u003e\u003ccode\u003e34fba63\u003c/code\u003e\u003c/a\u003e Restore previous SyncToAsync.\u003cstrong\u003ecall\u003c/strong\u003e internal code shape.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a43900c131874be571c6afdca642d4054eed0acf\"\u003e\u003ccode\u003ea43900c\u003c/code\u003e\u003c/a\u003e Separate mypy from tests extra.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/1b7c338591054c04ff6c140d899ced28b803b4e0\"\u003e\u003ccode\u003e1b7c338\u003c/code\u003e\u003c/a\u003e Releasing 3.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/157d9d4168434d73b1bb5a619f947b74ccbf1fc8\"\u003e\u003ccode\u003e157d9d4\u003c/code\u003e\u003c/a\u003e Renovate precommit (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/deda0d4fd8d3997dddd9646dd9ef7e0b6d3e59a5\"\u003e\u003ccode\u003ededa0d4\u003c/code\u003e\u003c/a\u003e Test free-threading builds and fix Local data leak for thread_inherit_context...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a54250a24ad770616d3afcc37af3186558562041\"\u003e\u003ccode\u003ea54250a\u003c/code\u003e\u003c/a\u003e Don’t capture the event loop in \u003ccode\u003eAsyncToSync.__init__\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/836356a2802247a0963177197b50cbd7476d7950\"\u003e\u003ccode\u003e836356a\u003c/code\u003e\u003c/a\u003e Use asyncio.run in StatelessServer.run (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/561\"\u003e#561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/e04afd54ba29bb277ba6177dc898c73c129446f3\"\u003e\u003ccode\u003ee04afd5\u003c/code\u003e\u003c/a\u003e Dropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/95d2430a346be7f40652d2eabff84fe54fbc725d\"\u003e\u003ccode\u003e95d2430\u003c/code\u003e\u003c/a\u003e Fixed \u003ca href=\"https://redirect.github.com/django/asgiref/issues/535\"\u003e#535\u003c/a\u003e: ThreadSensitiveContext.\u003cstrong\u003eaexit\u003c/strong\u003e blocking the event loop. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.11.1...3.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.4.22 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.7 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.7...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.3...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.8.0 to 2.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.9.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a potential \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003eexcessive CPU consumption\u003c/a\u003e issue.   Thanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos, for discovering and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.11.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Nicki Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression chain length is limited to 16.  Prior to this change,\na maliciously crafted DNS message could cause\ndns.name.from_wire_parser() to use excessive CPU for DNS name\ndecompression. Applications which processed untrusted DNS wire form\nmessages with dnspython could be degraded or DoS'd by the extra CPU\nuse required.\u003c/p\u003e\n\u003cp\u003eThanks to Evgenios Gkritsis, Constantinos Patsakis, and George Stergiopoulos\nfor finding and reporting this issue.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\"\u003ehttps://github.com/rthalley/dnspython/security/advisories/GHSA-45c3-73f7-pv4m\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHttpx2 has replaced httpx for HTTPS TCP connections.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.11.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDNSSEC now supports ML-DSA-44, a post-quantum signature algorithm.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NSEC3 Next Hashed Owner Name in presentation format is now decoded as\nbase32hex (RFC 5155 Section 1.3, RFC 4648 Extended Hex Alphabet).  The letters\nW, X, Y, and Z are not in that alphabet; they used to be accepted and silently\ndecoded to a different owner name, so \u003ccode\u003eto_text\u003c/code\u003e of the result did not match\nthe input.  They are now rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe NID and L64 node/locator ids in presentation format are now rejected when\na group contains anything other than hex digits. A sign or underscore, which\n\u003ccode\u003eint()\u003c/code\u003e silently accepts, produced a record whose text form did not parse\nback the same way (RFC 6742).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRdata of a known type in the generic \u003ccode\u003e\\#\u003c/code\u003e syntax, such as an NS record in a\nzone file, no longer fails to parse when it contains a name under the origin.\nIts names are relativized as in the type's own text form.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe SVCB and HTTPS \u003ccode\u003eech\u003c/code\u003e parameter value must now be an ECHConfigList with a\ncorrect length prefix and at least 4 octets of content (RFC 9848, RFC 9849).\nThe individual ECHConfig structures are not checked.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS SvcParamKeys in presentation format, including those listed in\n\u003ccode\u003emandatory\u003c/code\u003e, must now be spelled as RFC 9460 requires: 1-63 lowercase\nletters, digits, or hyphens.  Uppercase keys such as \u003ccode\u003eALPN\u003c/code\u003e and keys with\nunderscores such as \u003ccode\u003eno_default_alpn\u003c/code\u003e are rejected.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSVCB and HTTPS presentation format parsing now follows the escaping rules of\nRFC 9460.  SvcParamKeys may not contain escapes (e.g. \u003ccode\u003e\\097lpn=h2\u003c/code\u003e), and in\ncomma-separated values (\u003ccode\u003ealpn\u003c/code\u003e, \u003ccode\u003edocpath\u003c/code\u003e) only \u003ccode\u003e\\,\u003c/code\u003e and \u003ccode\u003e\\\\\u003c/code\u003e are\nvalid escapes after character-string decoding (e.g. \u003ccode\u003ealpn=\u0026quot;h2\\\\x\u0026quot;\u003c/code\u003e is\nrejected).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/e790c8f20a67ad439c7aafef2321e161c6028eee\"\u003e\u003ccode\u003ee790c8f\u003c/code\u003e\u003c/a\u003e add missing test file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b72af6723fa0df2113522132363eeda99c9abaa6\"\u003e\u003ccode\u003eb72af67\u003c/code\u003e\u003c/a\u003e CI release branch update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bdd62fed595a80b65feac75d7c2e1e3b908c56e6\"\u003e\u003ccode\u003ebdd62fe\u003c/code\u003e\u003c/a\u003e release prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/bafc96391dc352832fb17cc7939782735b642fb8\"\u003e\u003ccode\u003ebafc963\u003c/code\u003e\u003c/a\u003e Merge branch 'decompression-limit'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c5fecf515b4fa3a12e882bf80da232c94134cf50\"\u003e\u003ccode\u003ec5fecf5\u003c/code\u003e\u003c/a\u003e release tidying\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c7686f3ef513d0da121f57fe1899bf2a2997da35\"\u003e\u003ccode\u003ec7686f3\u003c/code\u003e\u003c/a\u003e update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/3c855c8d8f8269eb672aef3679cd2e33db924c03\"\u003e\u003ccode\u003e3c855c8\u003c/code\u003e\u003c/a\u003e more type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/52815c91bbd831f6cbe85ed7bba4d7b8e1c25400\"\u003e\u003ccode\u003e52815c9\u003c/code\u003e\u003c/a\u003e type lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/f563427fecd9c0c4ba60cf002f2f33a5c396dd2a\"\u003e\u003ccode\u003ef563427\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/b485e460c266540a1a09ca6d8d1d7b685b1d3023\"\u003e\u003ccode\u003eb485e46\u003c/code\u003e\u003c/a\u003e Limit decompression to a chain length of at most 16 pointers.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.8.0...v2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-jwt-extended` from 4.7.1 to 4.7.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/releases\"\u003eflask-jwt-extended's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.7.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esetup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requirement by \u003ca href=\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.7.3\u003c/h2\u003e\n\u003cp\u003eI'm skipping 4.7.2 because I forgot to bump the python version in code. This is the same as 4.7.2, with things setup correctly.\u003c/p\u003e\n\u003cp\u003eOops\u003c/p\u003e\n\u003ch2\u003e4.7.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: a unexpected token by \u003ca href=\"https://github.com/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate active python versions by \u003ca href=\"https://github.com/vimalloc\"\u003e\u003ccode\u003e@​vimalloc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/575\"\u003evimalloc/flask-jwt-extended#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyJWT to 2.12.1 by \u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/fdad1cd380fa39c2bbe5b8fb2db69b05d123293f\"\u003e\u003ccode\u003efdad1cd\u003c/code\u003e\u003c/a\u003e Bump to 4.7.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/a049882b80b077ed2c751d3b2eb9b3f70d925c4d\"\u003e\u003ccode\u003ea049882\u003c/code\u003e\u003c/a\u003e setup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requiremen...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/03b64352620661ab464db95f76f6950ff7986ad1\"\u003e\u003ccode\u003e03b6435\u003c/code\u003e\u003c/a\u003e Bump to 4.7.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/9bf8d353a87a8ec7ac144d7090dd8f9a51bcedc6\"\u003e\u003ccode\u003e9bf8d35\u003c/code\u003e\u003c/a\u003e Bump PyJWT to 2.12.1 (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/574\"\u003e#574\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/78cf9447f614365d1d0aaa9334be97a1634cfaa9\"\u003e\u003ccode\u003e78cf944\u003c/code\u003e\u003c/a\u003e Update active python versions (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/1910726f152016c3e48d61792983eebe11f54ac2\"\u003e\u003ccode\u003e1910726\u003c/code\u003e\u003c/a\u003e fix: a unexpected token (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.13 to 3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003ev3.18\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.17\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.16\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.20 (2026-09-17)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 18.0.0.\u003c/li\u003e\n\u003cli\u003eBetter enforcement of the domain length limit in the incremental\ncodec.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d55e65e1a3b1ede7f556bc202738066f5597e249\"\u003e\u003ccode\u003ed55e65e\u003c/code\u003e\u003c/a\u003e Release 3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0c0824a928e50048e59d4ce55fe760dba30528bc\"\u003e\u003ccode\u003e0c0824a\u003c/code\u003e\u003c/a\u003e Pre-release 3.20rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bd7c316a08761c79ba557b5b9e6a3da24d71fa88\"\u003e\u003ccode\u003ebd7c316\u003c/code\u003e\u003c/a\u003e Note Python 3.15 support in the 3.20 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b6cce8523eae3442aba976f01607b1cdf797c6ff\"\u003e\u003ccode\u003eb6cce85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/276\"\u003e#276\u003c/a\u003e from kjd/unicode-18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/9a4bc59e9d5ab89e7916fc0a50650cb55e3faf26\"\u003e\u003ccode\u003e9a4bc59\u003c/code\u003e\u003c/a\u003e Update to Unicode 18.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/dfab5a06affddcc7781a7bbab1cac1bb7d3b4e05\"\u003e\u003ccode\u003edfab5a0\u003c/code\u003e\u003c/a\u003e Merge branch 'python-3.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/417c35496ccbffad4b0a434ac9b563ee6f8fa0a9\"\u003e\u003ccode\u003e417c354\u003c/code\u003e\u003c/a\u003e Read the latest Unicode version from the DerivedAge.txt header instead of the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/cd1739200f3bf07871372bcb31c271de136eaccf\"\u003e\u003ccode\u003ecd17392\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/274\"\u003e#274\u003c/a\u003e from kjd/fix-decode-length-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5796d79d44c76a54f03e8938dd22edaa1221c27\"\u003e\u003ccode\u003ec5796d7\u003c/code\u003e\u003c/a\u003e Skip the decode round-trip check for domains past encode's length limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d6ee690bf133e874351103b9fe838fdda2a7a09f\"\u003e\u003ccode\u003ed6ee690\u003c/code\u003e\u003c/a\u003e Update to Python 3.15 release candidate in CI and add trove classifier\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.13...v3.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markupsafe` from 3.0.3 to 3.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.4\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/MarkupSafe/3.0.4/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-4\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/markupsafe/milestone/17?closed=1\"\u003ehttps://github.com/pallets/markupsafe/milestone/17?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild Python 3.15, armv7l, ppc64le, Android, and iOS wheels.\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003estriptags\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/521\"\u003e#521\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.4\u003c/h2\u003e\n\u003cp\u003eReleased 2026-10-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild Python 3.15, armv7l, ppc64le, Android, and iOS wheels.\u003c/li\u003e\n\u003cli\u003eImprove performance of \u003ccode\u003estriptags\u003c/code\u003e. :issue:\u003ccode\u003e521\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/ece26078ec168ebac69f02877238e68d4b376c91\"\u003e\u003ccode\u003eece2607\u003c/code\u003e\u003c/a\u003e release version 3.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/620bc809d748de3a7848bdf7e27b1c2a2903aaf5\"\u003e\u003ccode\u003e620bc80\u003c/code\u003e\u003c/a\u003e split archs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/73c3be1596906daf3e642e51852af5a019c5e1ea\"\u003e\u003ccode\u003e73c3be1\u003c/code\u003e\u003c/a\u003e fix wheel builds (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/d8ae19e6e45b5512472b74fe5c60b7f6aa18d70f\"\u003e\u003ccode\u003ed8ae19e\u003c/code\u003e\u003c/a\u003e fix wheel builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/ff1eaff921f92db57327752bbc37472d37fb9b21\"\u003e\u003ccode\u003eff1eaff\u003c/code\u003e\u003c/a\u003e Build Android and iOS wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/87e64f9628c574bf91898f8642a21356cccaa58c\"\u003e\u003ccode\u003e87e64f9\u003c/code\u003e\u003c/a\u003e build Android and iOS wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/bc33c55cb3078ba9f9b0950babb32f8d842f1267\"\u003e\u003ccode\u003ebc33c55\u003c/code\u003e\u003c/a\u003e Build ppc64le wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/518\"\u003e#518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/0ddd6eac9b20df52c75fae9181c0e73e195fa8d1\"\u003e\u003ccode\u003e0ddd6ea\u003c/code\u003e\u003c/a\u003e build ppc64le wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/3e0775809b92150b10d1671ce1821ea6eb56be0c\"\u003e\u003ccode\u003e3e07758\u003c/code\u003e\u003c/a\u003e Build armv7l wheels (\u003ca href=\"https://redirect.github.com/pallets/markupsafe/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/markupsafe/commit/39b9aae5f1e70edc33f380b47d1bef0e281746b5\"\u003e\u003ccode\u003e39b9aae\u003c/code\u003e\u003c/a\u003e build armv7l wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/markupsafe/compare/3.0.3...3.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.2 to 26.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a public \u003ccode\u003eVersionRange\u003c/code\u003e API and \u003ccode\u003eSpecifierSet.to_range()\u003c/code\u003e, representing the versions a specifier set accepts as an interval set that supports intersection, union, difference, complement, set relations, membership tests, and filtering. \u003ccode\u003eVersionRange.to_specifier_set()\u003c/code\u003e converts a range back to a \u003ccode\u003eSpecifierSet\u003c/code\u003e where a PEP 440 form exists. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1267\"\u003e#1267\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1194\"\u003e#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer source distributions over wheels for selected packages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epure_python_tags()\u003c/code\u003e to generate the pure-Python tags for a Python version without touching the running platform. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_subset()\u003c/code\u003e, \u003ccode\u003eSpecifierSet.is_superset()\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.is_disjoint()\u003c/code\u003e, which compare the versions two specifier sets accept. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBehavior adaptations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1157\"\u003e#1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e tags on Linux. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for versions and specifiers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a non-string. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to \u003ccode\u003eVersion.from_parts\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary intersections. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for requirements and markers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for trailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and \u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in sets and dicts. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize requested extra names before comparing or hashing requiremen...\n\n_Description has been truncated_","html_url":"https://github.com/dmancilla85/py-rest-server/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmancilla85%2Fpy-rest-server/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"0.31.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-12T09:32:29.000Z","version_change":"0.31.0 → 0.54.0","issue":{"uuid":"5811491274","node_id":"PR_kwDOUa0jGc8AAAABH74GLw","number":29,"state":"closed","title":"chore(deps): bump uvicorn from 0.31.0 to 0.54.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-12T19:04:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-12T09:32:29.000Z","updated_at":"2026-10-12T19:04:43.000Z","time_to_close":34332,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"uvicorn","old_version":"0.31.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.31.0 to 0.54.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.31.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uvicorn\u0026package-manager=pip\u0026previous-version=0.31.0\u0026new-version=0.54.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Atreyeed02/Keel/pull/29","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Atreyeed02%2FKeel/issues/29","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/29/packages"}},{"old_version":"0.51.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-12T08:45:51.000Z","version_change":"0.51.0 → 0.54.0","issue":{"uuid":"5810899335","node_id":"PR_kwDOP0CBjs8AAAABH7Z5rA","number":133,"state":"open","title":"build(deps): bump the backend-minor-patch group across 1 directory with 12 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-12T08:45:51.000Z","updated_at":"2026-10-12T08:45:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"backend-minor-patch","update_count":12,"packages":[{"name":"fastapi","old_version":"0.140.0","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"mcp","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"pandas","old_version":"3.0.5","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"coverage","old_version":"7.15.2","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"hypothesis","old_version":"6.161.5","new_version":"6.168.5","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"mypy","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/python/mypy"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"ruff","old_version":"0.16.0","new_version":"0.16.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"ty","old_version":"0.0.63","new_version":"0.0.85","repository_url":"https://github.com/astral-sh/ty"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-minor-patch group with 12 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.140.0` | `0.143.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `2.2.0` | `2.3.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.5` | `3.0.6` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.14.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.54.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.16.2` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.161.5` | `6.168.5` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.4.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.0` | `0.16.10` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.63` | `0.0.85` |\n\n\nUpdates `fastapi` from 0.140.0 to 0.143.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.143.0\u003c/h2\u003e\n\u003cp\u003eAutomatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from \u003ccode\u003eOTEL_*\u003c/code\u003e environment variables, set \u003ccode\u003eFASTAPI_OTEL_AUTO_CONFIGURE=true\u003c/code\u003e or use \u003ccode\u003eFastAPI(telemetry={\u0026quot;auto_configure\u0026quot;: True})\u003c/code\u003e to retain the previous behavior.\u003c/p\u003e\n\u003cp\u003eApplications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e💥 Require opt-in for automatic OpenTelemetry exporter setup. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16476\"\u003e#16476\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Isolate FastAPI telemetry for excluded requests. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16470\"\u003e#16470\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.142.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16468\"\u003e#16468\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Remove HTML title from newsletter to avoid the tooltip. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16461\"\u003e#16461\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Embed the FastAPI and friends newsletter signup form. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16459\"\u003e#16459\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update skill, use Asyncer for blocking code in threads. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16420\"\u003e#16420\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for fr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16436\"\u003e#16436\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for hi (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16435\"\u003e#16435\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16434\"\u003e#16434\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16433\"\u003e#16433\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16432\"\u003e#16432\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16431\"\u003e#16431\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16430\"\u003e#16430\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16429\"\u003e#16429\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16428\"\u003e#16428\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16425\"\u003e#16425\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16426\"\u003e#16426\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16427\"\u003e#16427\u003c/a\u003e by \u003ca href=\"https://github.com/apps/pr-submit\"\u003e\u003ccode\u003e@​pr-submit[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update Russian LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16449\"\u003e#16449\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Fix deprecated command in \u003ccode\u003ebump-pre-commit-hooks\u003c/code\u003e workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16463\"\u003e#16463\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Render. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16457\"\u003e#16457\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Use \u003ccode\u003egpt-6-astra\u003c/code\u003e model for translations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16453\"\u003e#16453\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group across 1 directory with 14 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16447\"\u003e#16447\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 1.6.0 to 1.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16440\"\u003e#16440\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16423\"\u003e#16423\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump gitpython from 3.1.60 to 3.1.62. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16444\"\u003e#16444\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5c6e9b4f9cadc1bf0f9a1fd672e621206b63007\"\u003e\u003ccode\u003ef5c6e9b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16477\"\u003e#16477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/182c8b8c83a0c3f19b61e31e092570af7d4e637b\"\u003e\u003ccode\u003e182c8b8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/af889e400baeb33c1594c84618a806c9c6a7f7ff\"\u003e\u003ccode\u003eaf889e4\u003c/code\u003e\u003c/a\u003e 💥 Require opt-in for automatic OpenTelemetry exporter setup (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16476\"\u003e#16476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9269f17524e7990c39a9a1708db532810ceffc06\"\u003e\u003ccode\u003e9269f17\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16471\"\u003e#16471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/78ede017de7ef596b91be036aa31ba331cf77bb6\"\u003e\u003ccode\u003e78ede01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4e31a07bafd08f247f39ab1e9144ba2a62395757\"\u003e\u003ccode\u003e4e31a07\u003c/code\u003e\u003c/a\u003e 🐛 Isolate FastAPI telemetry for excluded requests (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16470\"\u003e#16470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb8dabcd4a7b44e180d7c258377ae4b0abf99bff\"\u003e\u003ccode\u003ecb8dabc\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.142.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16469\"\u003e#16469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/787dc561d524349a6eadca365d4f2844d66b1b9d\"\u003e\u003ccode\u003e787dc56\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6eae2f3456c889ad791de38dd45c14e17de775d3\"\u003e\u003ccode\u003e6eae2f3\u003c/code\u003e\u003c/a\u003e 🐛 Cache OpenTelemetry tracers to preserve warning deduplication (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16468\"\u003e#16468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/94918c1d40afb27065c64d523219ed2ad9822f76\"\u003e\u003ccode\u003e94918c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.140.0...0.143.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.1.1 to 6.1.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.3 (2026-09-02)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2165901: External parameter entity parsing was allowed by default\n(with \u003ccode\u003eresolve_entities=\u0026quot;internal\u0026quot;\u003c/code\u003e).\nIssue found by Tomer Fichman.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.1.2 (2026-08-18)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eGH#526: Some build files were missing in the sdist.\nPatch by Nicola Soranzo.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSome minor corrections for error handling cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuilt with Cython 3.2.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/3c1a4c7f2d5a3c19efe01adfd3c33ac3c8fe52c1\"\u003e\u003ccode\u003e3c1a4c7\u003c/code\u003e\u003c/a\u003e Prepare release of 6.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c1191fc55b8d574544203d07e7a02ba3378ced8d\"\u003e\u003ccode\u003ec1191fc\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/03ec3123b9683e7f02ce659f34322667683d3eef\"\u003e\u003ccode\u003e03ec312\u003c/code\u003e\u003c/a\u003e Disable parameter entity parsing when internal-only entity parsing is requested.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/11d03e922e0a7845131df3ab2fb5e894c0ced0ab\"\u003e\u003ccode\u003e11d03e9\u003c/code\u003e\u003c/a\u003e Build: Prevent duplicate Py3.8 wheel builds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9efc586ed3555be22548a3188f7f435826834961\"\u003e\u003ccode\u003e9efc586\u003c/code\u003e\u003c/a\u003e Build: Exclude musllinux-ARM from Py3.8 wheel building to prevent slow emulat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9716fb1e1a80db4ba5e36bf99947dfccd8730471\"\u003e\u003ccode\u003e9716fb1\u003c/code\u003e\u003c/a\u003e Build: Include older PyPy versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/0f3327d3c8fc1ba01c90a866770ad8c4889e537f\"\u003e\u003ccode\u003e0f3327d\u003c/code\u003e\u003c/a\u003e Build: Exclude Win-Aarch64 from wheel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6967c960976541979570099de9866af398fb292f\"\u003e\u003ccode\u003e6967c96\u003c/code\u003e\u003c/a\u003e Build: Make all built wheels downloadable even if they don't pass the release...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/061218d210747a1181dea76fb6b6d0eebe946b2d\"\u003e\u003ccode\u003e061218d\u003c/code\u003e\u003c/a\u003e Build: Exclude Py3.15 i686 wheels from validation (because they are intention...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/ce9fe0dd26bd5b64fe03b6bcdf68a997ee5a2596\"\u003e\u003ccode\u003ece9fe0d\u003c/code\u003e\u003c/a\u003e Build: Fix Py3.8 windows build.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lxml/lxml/compare/lxml-6.1.1...lxml-6.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mcp` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/releases\"\u003emcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003epip install -U mcp\u003c/code\u003e. Docs: \u003ca href=\"https://py.sdk.modelcontextprotocol.io/\"\u003ehttps://py.sdk.modelcontextprotocol.io/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eMostly fixes, plus three new options. A few things behave differently, so skim these first:\u003c/p\u003e\n\u003ch2\u003eBehaviour changes\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003ehttpx2\u0026gt;=2.10.0\u003c/code\u003e is now required\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3600\"\u003e#3600\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt was \u003ccode\u003e\u0026gt;=2.5.0\u003c/code\u003e. The new \u003ccode\u003emax_sse_event_size\u003c/code\u003e option needs it.\u003c/li\u003e\n\u003cli\u003eNothing to do unless you pin \u003ccode\u003ehttpx2\u003c/code\u003e below 2.10.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eA tool with an invalid \u003ccode\u003ex-mcp-header\u003c/code\u003e annotation fails at registration\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@mcp.tool()\u003c/code\u003e, \u003ccode\u003eadd_tool\u003c/code\u003e and \u003ccode\u003eTool.from_function\u003c/code\u003e raise \u003ccode\u003eInvalidSignature\u003c/code\u003e, naming the tool and the problem.\u003c/li\u003e\n\u003cli\u003eUntil now the server started, and 2026-07-28 clients silently dropped the tool from their listing.\u003c/li\u003e\n\u003cli\u003eRefused: anything other than a plain \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e or \u003ccode\u003ebool\u003c/code\u003e parameter (so also \u003ccode\u003estr | None\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, lists and enums), a header name that isn't a valid token, and two names that differ only by case.\u003c/li\u003e\n\u003cli\u003eFor an optional header parameter, give the schema directly: \u003ccode\u003eAnnotated[str | None, WithJsonSchema({\u0026quot;type\u0026quot;: \u0026quot;string\u0026quot;, \u0026quot;x-mcp-header\u0026quot;: \u0026quot;Region\u0026quot;})] = None\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eEmpty \u003ccode\u003e_meta\u003c/code\u003e and \u003ccode\u003eparams\u003c/code\u003e are no longer sent\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOn 2025-11-25 and earlier connections, 2.x sent \u003ccode\u003e\u0026quot;_meta\u0026quot;: {}\u003c/code\u003e on every request. Some servers reject that. It is now left out, as in v1.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eping\u003c/code\u003e and list requests without a cursor go out with no \u003ccode\u003eparams\u003c/code\u003e member.\u003c/li\u003e\n\u003cli\u003eOn the receiving side \u003ccode\u003ectx.meta\u003c/code\u003e is \u003ccode\u003eNone\u003c/code\u003e rather than \u003ccode\u003e{}\u003c/code\u003e, and middleware sees \u003ccode\u003ectx.params\u003c/code\u003e as \u003ccode\u003eNone\u003c/code\u003e for a request without params.\u003c/li\u003e\n\u003cli\u003e2026-07-28 connections are unchanged.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003einitialize\u003c/code\u003e leaves out \u003ccode\u003eexperimental\u003c/code\u003e when none is configured\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3614\"\u003e#3614\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIt used to send \u003ccode\u003e\u0026quot;experimental\u0026quot;: {}\u003c/code\u003e. \u003ccode\u003eserver/discover\u003c/code\u003e already left it out.\u003c/li\u003e\n\u003cli\u003eClient code reading \u003ccode\u003ecapabilities.experimental\u003c/code\u003e on a legacy connection should handle \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eMcp-Param-*\u003c/code\u003e validation looks the tool up by name\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3630\"\u003e#3630\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMCPServer\u003c/code\u003e no longer runs \u003ccode\u003etools/list\u003c/code\u003e for every \u003ccode\u003etools/call\u003c/code\u003e, so middleware no longer sees that extra request.\u003c/li\u003e\n\u003cli\u003eThe registered schema is what gets checked. Middleware that filters or rewrites \u003ccode\u003etools/list\u003c/code\u003e no longer affects it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eAn interactive OAuth login no longer counts against request timeouts\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3635\"\u003e#3635\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe timeout pauses while \u003ccode\u003eOAuthClientProvider\u003c/code\u003e waits on \u003ccode\u003eredirect_handler\u003c/code\u003e and \u003ccode\u003ecallback_handler\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThis fixes \u003ccode\u003eClient(mode=\u0026quot;auto\u0026quot;)\u003c/code\u003e settling on \u003ccode\u003e2025-11-25\u003c/code\u003e when the login took longer than 10 seconds.\u003c/li\u003e\n\u003cli\u003eA request timeout no longer ends a login nobody finishes. Put a limit inside \u003ccode\u003ecallback_handler\u003c/code\u003e if you need one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emax_sse_event_size=\u003c/code\u003e on \u003ccode\u003estreamable_http_client\u003c/code\u003e and \u003ccode\u003eStreamableHttpParameters\u003c/code\u003e. The default stays 1 MiB per SSE event; raise it, or pass \u003ccode\u003eNone\u003c/code\u003e, for larger tool results (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3600\"\u003e#3600\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMCPServer(subscriptions=False)\u003c/code\u003e stops serving \u003ccode\u003esubscriptions/listen\u003c/code\u003e and advertises \u003ccode\u003elistChanged\u003c/code\u003e and \u003ccode\u003esubscribe\u003c/code\u003e as false (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3626\"\u003e#3626\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eServer(get_tool_input_schema=...)\u003c/code\u003e lets a low-level server supply a tool's schema for header validation without running its \u003ccode\u003etools/list\u003c/code\u003e handler (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3630\"\u003e#3630\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eClient.call_tool\u003c/code\u003e re-lists the tools and retries once after a \u003ccode\u003eHeaderMismatch\u003c/code\u003e (\u003ccode\u003e-32020\u003c/code\u003e) rejection (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3627\"\u003e#3627\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ectx: Context[AppState]\u003c/code\u003e works on prompts and resource templates, not only on tools (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3624\"\u003e#3624\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn explicit \u003ccode\u003e\u0026quot;structuredContent\u0026quot;: null\u003c/code\u003e is checked against the output schema instead of being treated as missing (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3621\"\u003e#3621\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003eprogress_callback\u003c/code\u003e that raises no longer fails the call on an in-process \u003ccode\u003eClient(server)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3623\"\u003e#3623\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClient OpenTelemetry spans record JSON-RPC error responses. With \u003ccode\u003emode=\u0026quot;auto\u0026quot;\u003c/code\u003e, connecting to a server without \u003ccode\u003eserver/discover\u003c/code\u003e now shows one \u003ccode\u003eERROR\u003c/code\u003e span for the probe (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3629\"\u003e#3629\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estdio_client\u003c/code\u003e resolves the executable off the event loop on Windows (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3510\"\u003e#3510\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/2118f14f8a19bc158d8a1cf90af58d85d187f849\"\u003e\u003ccode\u003e2118f14\u003c/code\u003e\u003c/a\u003e docs: refresh translations for recent English changes (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3636\"\u003e#3636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/ed9b2d61823b3800de4c48abb23b951ad3a50834\"\u003e\u003ccode\u003eed9b2d6\u003c/code\u003e\u003c/a\u003e Stop counting an interactive OAuth login against request timeouts (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3635\"\u003e#3635\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/d5cebd13defe97bf5bacb93496f132d4173cda23\"\u003e\u003ccode\u003ed5cebd1\u003c/code\u003e\u003c/a\u003e Keep inline-snapshot disabled when pytest runs in a terminal (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c15566c9dd4828b8082fb7693060e3a0fd67e657\"\u003e\u003ccode\u003ec15566c\u003c/code\u003e\u003c/a\u003e Link What's new to the Header parameters page (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/4d29994023576e4b04e06c9ff2f32757abc50463\"\u003e\u003ccode\u003e4d29994\u003c/code\u003e\u003c/a\u003e Let a newer Deploy Docs run cancel the one in progress (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3633\"\u003e#3633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/0acea605135759a2228a33eaa7d792fea2c2282b\"\u003e\u003ccode\u003e0acea60\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.7.0 to 2.8.0 (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3607\"\u003e#3607\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/c54075ccb8793e9b0d37f0c9e2c58dfd0256c23d\"\u003e\u003ccode\u003ec54075c\u003c/code\u003e\u003c/a\u003e Look the tool schema up by name for Mcp-Param-* validation instead of running...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/9afccae3d0bff4062add01b7fb746634b9aad2a7\"\u003e\u003ccode\u003e9afccae\u003c/code\u003e\u003c/a\u003e Retry a tool call once after a HeaderMismatch rejection (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3627\"\u003e#3627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/cafa33b3530b0af2e4a8467d11f92bc1cb00368e\"\u003e\u003ccode\u003ecafa33b\u003c/code\u003e\u003c/a\u003e Record JSON-RPC error responses on the client OpenTelemetry span (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3629\"\u003e#3629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/commit/0b2fd3ea60efb16b349e8c887cf91bf2f9f773fc\"\u003e\u003ccode\u003e0b2fd3e\u003c/code\u003e\u003c/a\u003e Omit an empty _meta and empty params from outbound requests (\u003ca href=\"https://redirect.github.com/modelcontextprotocol/python-sdk/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/modelcontextprotocol/python-sdk/compare/v2.2.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 3.0.5 to 3.0.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epandas 3.0.6\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 3.0.6.\nThis is a patch release in the 3.0.x series and includes some regression fixes and bug fixes. We recommend that all users of the 3.0.x series upgrade to this version. This is also the first release to support Python 3.15.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/docs/whatsnew/v3.0.6.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\u003c/p\u003e\n\u003cp\u003ePandas 3.0 supports Python 3.11 and higher.\nThe release can be installed from PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pandas==3.0.*\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from conda-forge\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge pandas=3.0\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2905718b126579d2cf0fe5bae05bd75facb67d77\"\u003e\u003ccode\u003e2905718\u003c/code\u003e\u003c/a\u003e RLS: 3.0.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/3188cede89a060e7d2ca37298e160d1712a8695a\"\u003e\u003ccode\u003e3188ced\u003c/code\u003e\u003c/a\u003e [backport 3.0.x]  BUG: read_csv(sep=None) raised TypeError instead of falling...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/f0979054b9bb20fb43dadb8be9c7cd052506a5fb\"\u003e\u003ccode\u003ef097905\u003c/code\u003e\u003c/a\u003e DOC: cleanup 3.0.6 whatsnew + mention Python 3.15 support (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68965\"\u003e#68965\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68969\"\u003e#68969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/4f68223463a6b960b5cdafc10125bf0987dd2698\"\u003e\u003ccode\u003e4f68223\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: fix setting with bool column mask into 1-column DataFra...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e3df0e81f4e1830f0fe833ef83c51d4a511d9d95\"\u003e\u003ccode\u003ee3df0e8\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: full-slice setitem into a pyarrow-backed array shared m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b7735f6070ef031296101acc42a5a30e0f3cc791\"\u003e\u003ccode\u003eb7735f6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/66117\"\u003e#66117\u003c/a\u003e on branch 3.0.x (BUG: interpolate leaving NAs unfilled for...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/bca0b7769ef0bb5e28d220e245c268142c62d637\"\u003e\u003ccode\u003ebca0b77\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: read_csv leaked the string-intern table when a column f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/bca1e5de1f691366cf450c929326e7a35b03218a\"\u003e\u003ccode\u003ebca1e5d\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] BUG: prevent external mutation of RangeIndex._data (CoW) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/6\"\u003e#6\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/c95b42cb0c91bd0cadb34429e1df377926087e0d\"\u003e\u003ccode\u003ec95b42c\u003c/code\u003e\u003c/a\u003e [3.0.x] CI: skip cython-lint on pre-commit.ci (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68910\"\u003e#68910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/9cbd884bb9218323777d8237163dea1a30e7e506\"\u003e\u003ccode\u003e9cbd884\u003c/code\u003e\u003c/a\u003e [backport 3.0.x] Backport of some already merged regression fixes (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/68447\"\u003e#68447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v3.0.5...v3.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.13.4 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 2026-10-08\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e) are also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.14.0b2 2026-09-09\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis pre-release adds full support for Python 3.15 specific features, such as support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e, making use of \u003ca href=\"https://docs.python.org/3.15/library/typing.html#typing.TypeForm\"\u003e\u003ccode\u003eTypeForm\u003c/code\u003e\u003c/a\u003e and stabilizing the \u003ca href=\"https://pydantic.dev/docs/validation/latest/concepts/types/#missing-sentinel\"\u003e\u003ccode\u003eMISSING\u003c/code\u003e sentinel\u003c/a\u003e type.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow any \u003ccode\u003eCoreSchema\u003c/code\u003e to be used as serialization by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13680\"\u003e#13680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://docs.python.org/3.15/library/stdtypes.html#frozendict\"\u003e\u003ccode\u003efrozendict\u003c/code\u003e\u003c/a\u003e type by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13634\"\u003e#13634\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0 (2026-10-08)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThe highlights of the v2.14 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-14-release\"\u003eblog post\u003c/a\u003e.\nSeveral minor changes (considered non-breaking changes according to our \u003ca href=\"https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2\"\u003eversioning policy\u003c/a\u003e)\nare also included in this release. Make sure to look into them before upgrading.\u003c/p\u003e\n\u003cp\u003eThis release drops support for Python 3.9 and adds support for Python 3.15.\u003c/p\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003emultiple_of\u003c/code\u003e constraint in \u003ccode\u003efraction\u003c/code\u003e and \u003ccode\u003etimedelta\u003c/code\u003e core schemas by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13873\"\u003e#13873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e__namespace__\u003c/code\u003e parameter to \u003ccode\u003ecreate_model()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13895\"\u003e#13895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an \u003ccode\u003eordered-dict\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13796\"\u003e#13796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecounter\u003c/code\u003e core schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13824\"\u003e#13824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not mutate \u003ccode\u003emodel_config\u003c/code\u003e attribute by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13825\"\u003e#13825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject newlines in \u003ccode\u003eNameEmail\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13897\"\u003e#13897\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCall enum constructors in both validation modes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13792\"\u003e#13792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation examples not raising and remove unused \u003ccode\u003estring_sub_type\u003c/code\u003e unused error code by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13821\"\u003e#13821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCatch \u003ccode\u003eOverflowError\u003c/code\u003e during \u003ccode\u003eByteSize\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13850\"\u003e#13850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRequire \u003ccode\u003emultiple_of\u003c/code\u003e constraints to be positive by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13862\"\u003e#13862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlways pop field name and model type stacks during schema generation by \u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eTypeError\u003c/code\u003e gracefully during docstring extraction by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13874\"\u003e#13874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix config propagation of stdlib dataclasses and \u003ccode\u003eTypedDict\u003c/code\u003es in JSON Schema by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13891\"\u003e#13891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't apply \u003ccode\u003eser_json_timedelta\u003c/code\u003e to all datetime types in serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13892\"\u003e#13892\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode JSON Schema defaults with a consistent configuration by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13893\"\u003e#13893\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate \u003ccode\u003einit\u003c/code\u003e and \u003ccode\u003ekw_only=False\u003c/code\u003e from \u003ccode\u003eField()\u003c/code\u003e to stdlib dataclass fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13898\"\u003e#13898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect propagated extra config in the JSON Schema of stdlib dataclasses by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13899\"\u003e#13899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle OS errors during \u003ccode\u003eZoneInfo\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13912\"\u003e#13912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13940\"\u003e#13940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRebuild incomplete types during serialization inference by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13922\"\u003e#13922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13944\"\u003e#13944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid validating URL prefix multiple times in multi host URLs by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13945\"\u003e#13945\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saquibjawedbit\"\u003e\u003ccode\u003e@​saquibjawedbit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13859\"\u003e#13859\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.14.0b2 (2026-09-09)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.14.0b2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fcdefa7198c4fc94a22eecf1a5b7926e20b9fc8a\"\u003e\u003ccode\u003efcdefa7\u003c/code\u003e\u003c/a\u003e Correct v2.14.0 release date (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13952\"\u003e#13952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c821eaccf9873357477a1e7d2d4d12dd4e161c8a\"\u003e\u003ccode\u003ec821eac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Respect config in \u003ccode\u003eTypeAdapter.json_schemas()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13890\"\u003e#13890\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13951\"\u003e#13951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a656b75d58a80f5033f376f7af17092606bbfde2\"\u003e\u003ccode\u003ea656b75\u003c/code\u003e\u003c/a\u003e Prepare release v2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13948\"\u003e#13948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b4028f9d87e34750e53be0ba011d70f3c0fcc94e\"\u003e\u003ccode\u003eb4028f9\u003c/code\u003e\u003c/a\u003e Avoid validating URL prefix multiple times in multi host URLs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13945\"\u003e#13945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/69ed168e9ad465eef4c8d81efb152a93b604daf5\"\u003e\u003ccode\u003e69ed168\u003c/code\u003e\u003c/a\u003e Reject large exponents in \u003ccode\u003eFraction\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13944\"\u003e#13944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/895c0c285c5cb4c0c7c7a4619a80941c12f2c75f\"\u003e\u003ccode\u003e895c0c2\u003c/code\u003e\u003c/a\u003e Fix datetime parsing in custom validator examples (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13931\"\u003e#13931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d2cbaaab74ba4a26bb66f604199ec9793aab6177\"\u003e\u003ccode\u003ed2cbaaa\u003c/code\u003e\u003c/a\u003e Bump virtualenv from 20.36.1 to 21.7.13 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13943\"\u003e#13943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/3fbc25ab2bd4f370f478102652f20aea1f5de0b0\"\u003e\u003ccode\u003e3fbc25a\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e dependencies (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13942\"\u003e#13942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/027b5c714791d5f6e86faea4110ef26f4776648c\"\u003e\u003ccode\u003e027b5c7\u003c/code\u003e\u003c/a\u003e Rebuild incomplete types during serialization inference (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13922\"\u003e#13922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2706d1f6cdd0ca5b941fd5170ecf0254f933e1f6\"\u003e\u003ccode\u003e2706d1f\u003c/code\u003e\u003c/a\u003e Handle exceptions during \u003ccode\u003eDecimal\u003c/code\u003e validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/13940\"\u003e#13940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.4...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.51.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.51.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.0\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003eissue 2266\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coverage.html#coverage.Coverage.switch_context\"\u003eCoverage.switch_context()\u003c/a\u003e method now returns the previous context.\u003c/li\u003e\n\u003cli\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003epull 2268\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixes to validation of options and configuration settings:\n\u003cul\u003e\n\u003cli\u003eNegative precision settings now always cause useful error messages (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003epull 2261\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn invalid regex in the \u003ccode\u003e--contexts\u003c/code\u003e option (or the \u003ccode\u003e[report] contexts\u003c/code\u003e setting) reported a confusing “Couldn’t use data file …: user-defined function raised exception” error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003epull 2262\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNon-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e entry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the \u003ccode\u003e[paths]\u003c/code\u003e section (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003epull 2263\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like \u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can’t reach the subprocesses. The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as the entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e slipped through and failed later with “Can’t combine statement coverage data with branch data”. Each named concurrency library is now properly considered (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2270\"\u003epull 2270\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any measured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on Windows. The original extension is now restored on the annotated copy (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003epull 2265\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.0\"\u003ecoverage 7.16.0\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.4\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: in the HTML report, a source file name containing a double quote (legal on POSIX) wasn’t escaped where it’s dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index and prev/next links, so it could close the attribute early and inject markup. Page URLs are now escaped. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: the LCOV report wrote file names and other fields into its line-oriented records without neutralizing control characters. A measured file whose name contained a newline (legal on POSIX) could forge extra records, inflating the coverage seen by tools that read the report. Control characters in a field are now replaced. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eWheels are now provided for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.4\"\u003ecoverage 7.15.4\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.4\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.3\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the combination would be prevented when read from the coverage.py configuration. But using the context API as pytest-cov does, contexts would be silently dropped. Now a warning is issued, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003eJisang Han\u003c/a\u003e. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003eissue 2200\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eA performance improvement in the low-level line number bookkeeping when combining data files, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003eKevin Turcios\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWhen combining files, now path separator slashes will automatically be\nconverted to the local file system style. This makes it less necessary to\ndefine \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems.\nFixes \u003ccode\u003eissue 2266\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe :meth:\u003ccode\u003e.Coverage.switch_context\u003c/code\u003e method now returns the previous context.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.161.5 to 6.168.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ca2a4c6e3c6b979d9fbb5ef9db614885a736d2aa\"\u003e\u003ccode\u003eca2a4c6\u003c/code\u003e\u003c/a\u003e Bump hypothesis version to 6.168.5 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypo...\n\n_Description has been truncated_","html_url":"https://github.com/Interloperok/AI.InfraCalculator/pull/133","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Interloperok%2FAI.InfraCalculator/issues/133","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/133/packages"}},{"old_version":"0.38.0","new_version":"0.54.0","update_type":"minor","path":null,"pr_created_at":"2026-10-11T22:31:12.000Z","version_change":"0.38.0 → 0.54.0","issue":{"uuid":"5805852517","node_id":"PR_kwDOU6q5oM8AAAABH3dcsA","number":43,"state":"closed","title":"chore(deps)(deps): bump the minor-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-11T23:02:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-11T22:31:12.000Z","updated_at":"2026-10-11T23:02:41.000Z","time_to_close":1884,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): bump","group_name":"minor-updates","update_count":83,"packages":[{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"alembic","old_version":"1.17.0","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"colorlog","old_version":"6.10.1","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"ctranslate2","old_version":"4.6.0","new_version":"4.8.2","repository_url":"https://github.com/OpenNMT/CTranslate2"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"flatbuffers","old_version":"25.9.23","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.66.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.5","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.2.4","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.75.1","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"hf-xet","old_version":"1.1.10","new_version":"1.7.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.18","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"joblib","old_version":"1.5.2","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"llvmlite","old_version":"0.45.1","new_version":"0.50.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markdown-it-py","old_version":"4.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib","old_version":"3.10.7","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"networkx","old_version":"3.5","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numba","old_version":"0.62.1","new_version":"0.68.0"},{"name":"numpy","old_version":"2.2.6","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.23.1","new_version":"1.30.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"opentelemetry-api","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-proto","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.38.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.59b0","new_version":"0.66b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"prometheus-client","old_version":"0.21.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg","old_version":"3.2.10","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.2.10","new_version":"3.3.6","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pyannote-metrics","old_version":"4.0.0","new_version":"4.1"},{"name":"pyannoteai-sdk","old_version":"0.3.0","new_version":"0.4.0"},{"name":"pydantic","old_version":"2.12.3","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.4","new_version":"2.50.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"safetensors","old_version":"0.6.2","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"scikit-learn","old_version":"1.7.2","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.16.2","new_version":"1.17.1","repository_url":"https://github.com/scipy/scipy"},{"name":"soundfile","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"sqlalchemy","old_version":"2.0.44","new_version":"2.1.4","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.3.1","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tiktoken","old_version":"0.12.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tokenizers","old_version":"0.22.1","new_version":"0.23.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torchcodec","old_version":"0.14.0","new_version":"0.17.0","repository_url":"https://github.com/pytorch/torchcodec"},{"name":"torchmetrics","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/Lightning-AI/torchmetrics"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"triton","old_version":"3.7.1","new_version":"3.8.0","repository_url":"https://github.com/triton-lang/triton"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.22.1","new_version":"0.23.0","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wheel","old_version":"0.47.0","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"wrapt","old_version":"2.2.2","new_version":"2.5.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"yt-dlp","old_version":"2026.7.4","new_version":"2026.8.19","repository_url":"https://github.com/yt-dlp/yt-dlp"},{"name":"torch","old_version":"2.13.0","new_version":"2.14.1","repository_url":"https://github.com/pytorch/pytorch"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-timeout","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/pytest-dev/pytest-timeout"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"openapi-spec-validator","old_version":"0.7.1","new_version":"0.9.0","repository_url":"https://github.com/python-openapi/openapi-spec-validator"},{"name":"ruff","old_version":"0.9.1","new_version":"0.16.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"black","old_version":"26.3.1","new_version":"26.10.0","repository_url":"https://github.com/psf/black"},{"name":"bandit","old_version":"1.8.0","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"nvidia-cudnn-cu12","old_version":"9.10.2.21","new_version":"9.27.0.42"},{"name":"nvidia-cusparselt-cu12","old_version":"0.7.1","new_version":"0.8.1"},{"name":"nvidia-nccl-cu12","old_version":"2.29.3","new_version":"2.32.3"},{"name":"nvidia-nvshmem-cu12","old_version":"3.4.5","new_version":"3.8.0"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.17.0` | `1.20.0` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.5.2` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.10.1` | `6.12.0` |\n| [ctranslate2](https://github.com/OpenNMT/CTranslate2) | `4.6.0` | `4.8.2` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.143.0` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.9.23` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.66.1` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.5` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.4` | `3.5.6` |\n| [grpcio](https://github.com/grpc/grpc) | `1.75.1` | `1.84.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.1.10` | `1.7.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.20` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.2` | `1.6.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.45.1` | `0.50.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.3` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `4.0.0` | `4.2.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.7` | `3.11.2` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6.1` |\n| [numba](https://numba.pydata.org) | `0.62.1` | `0.68.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.6` | `2.4.6` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.23.1` | `1.30.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.45.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.66b1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.21.0` | `0.26.0` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.4` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.2.10` | `3.3.6` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.2.10` | `3.3.6` |\n| pyannote-metrics | `4.0.0` | `4.1` |\n| pyannoteai-sdk | `0.3.0` | `0.4.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.3` | `2.14.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.15.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.4` | `2.50.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.3` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.6.2` | `0.8.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.2` | `1.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.16.2` | `1.17.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.13.1` | `0.14.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.44` | `2.1.4` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.7.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.14.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.1` | `0.23.2` |\n| [torchcodec](https://github.com/pytorch/torchcodec) | `0.14.0` | `0.17.0` |\n| [torchmetrics](https://github.com/Lightning-AI/torchmetrics) | `1.8.2` | `1.9.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.1` |\n| [triton](https://github.com/triton-lang/triton) | `3.7.1` | `3.8.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.54.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.22.1` | `0.23.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.3.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.47.0` | `0.48.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.2.2` | `2.5.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.25.1` |\n| [yt-dlp](https://github.com/yt-dlp/yt-dlp) | `2026.7.4` | `2026.8.19` |\n| [torch](https://github.com/pytorch/pytorch) | `2.13.0` | `2.14.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) | `2.3.1` | `2.4.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [openapi-spec-validator](https://github.com/python-openapi/openapi-spec-validator) | `0.7.1` | `0.9.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.9.1` | `0.16.10` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.10.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.0` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [nvidia-cudnn-cu12](https://developer.nvidia.com/cuda-zone) | `9.10.2.21` | `9.27.0.42` |\n| [nvidia-cusparselt-cu12](https://developer.nvidia.com/cusparselt) | `0.7.1` | `0.8.1` |\n| [nvidia-nccl-cu12](https://developer.nvidia.com/cuda-zone) | `2.29.3` | `2.32.3` |\n| [nvidia-nvshmem-cu12](https://developer.nvidia.com/cuda-zone) | `3.4.5` | `3.8.0` |\n\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/4dfc926e30eea8d24c1a71602d73c0e9a895c191\"\u003e\u003ccode\u003e4dfc926\u003c/code\u003e\u003c/a\u003e 2.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e perf: use defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/338277badfb25fc38759ce38ab9ea2c20ec1bfff\"\u003e\u003ccode\u003e338277b\u003c/code\u003e\u003c/a\u003e chore: stop tracking .DS_Store files (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/16978694944ed7fb5e7b49a173160144ccac45bc\"\u003e\u003ccode\u003e1697869\u003c/code\u003e\u003c/a\u003e ci: add codspeed benchmark suite for addrinfo reordering hot paths (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/d40a848cd2262b435242646fa8e220300bcd6952\"\u003e\u003ccode\u003ed40a848\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/51d42669b2b94a78c6d4bd059e449b8ef51c6646\"\u003e\u003ccode\u003e51d4266\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.7 to 48.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2df44b3987d3c887a8493ba19259c63588226d6c\"\u003e\u003ccode\u003e2df44b3\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3e3cb615f00bfb4d29c30e0c86c897f4de8fb02d\"\u003e\u003ccode\u003e3e3cb61\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.3 to 9.1.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/922dcd79a66d67fdd98a5f9b7587c4f8cda44653\"\u003e\u003ccode\u003e922dcd7\u003c/code\u003e\u003c/a\u003e chore(deps-ci): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/70461c583a8cf3c6fa85b8c48b8e4b576cee8083\"\u003e\u003ccode\u003e70461c5\u003c/code\u003e\u003c/a\u003e ci: drop .github/FUNDING.yml to inherit org-wide config (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.17.0 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026quot;recreate\u0026quot; operation.  An unnamed\nCHECK constraint can't be reliably carried over in a batch recreate\nas it may refer to columns that are being dropped or changed.  This\nomission was previously a silent operation.   The presence of any\n\u003ccode\u003e~sqlalchemy.schema.CheckConstraint\u003c/code\u003e in\n\u003ccode\u003eOperations.batch_alter_table.table_args\u003c/code\u003e is taken to indicate\nthat the case has been accommodated, and no warning is emitted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1846\"\u003e#1846\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Autogenerate now renders a warning comment above any rendered\n\u003ccode\u003eOperations.drop_constraint()\u003c/code\u003e directive for which the constraint name\nis \u003ccode\u003eNone\u003c/code\u003e, as is the case when a constraint that has no name in the model\nis dropped, most typically within the \u003ccode\u003edowngrade()\u003c/code\u003e function of a\nmigration that adds an unnamed constraint.  A warning is also emitted on\nthe console when the migration script is generated.   The directive\nrequires a non-None name in order to be able to emit a \u0026quot;DROP CONSTRAINT\u0026quot;\ncommand.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/916\"\u003e#916\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where adding a column with a type that generates\nits own CHECK constraint, such as \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or\n\u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e with\n\u003ccode\u003e~sqlalchemy.types.Boolean.create_constraint\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e,\nwould emit the constraint twice when the table was recreated, once under\nthe name generated by the naming convention in use and once under the\nname given to the type.  The constraint is now emitted once, using the\nsame name that would be used outside of batch mode.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1768\"\u003e#1768\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where a CHECK constraint generated by a type such\nas \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or \u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e\nwould lose the name established for it by the naming convention in use\nwhen the table was recreated, as the constraint was regenerated against\nthe temporary table used for the recreate operation.  The naming\nconvention is now resolved against the name of the table being replaced.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `authlib` from 1.7.2 to 1.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrefer \u003ccode\u003eid_token_signed_response_alg\u003c/code\u003e client metadata to guess algs by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/888\"\u003eauthlib/authlib#888\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Catch InvalidKeyIdError in RFC 9068 JWTBearerTokenValidator by \u003ca href=\"https://github.com/liudonggalaxy\"\u003e\u003ccode\u003e@​liudonggalaxy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/891\"\u003eauthlib/authlib#891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: make leeway configurable in JWTBearerTokenValidator by \u003ca href=\"https://github.com/mondi04\"\u003e\u003ccode\u003e@​mondi04\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/903\"\u003eauthlib/authlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add default jti claim to sign_jwt_bearer_assertion by \u003ca href=\"https://github.com/liudonggalaxy\"\u003e\u003ccode\u003e@​liudonggalaxy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/897\"\u003eauthlib/authlib#897\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oauth): cast sub claim to string in JWTBearerTokenGenerator by \u003ca href=\"https://github.com/levinKaus\"\u003e\u003ccode\u003e@​levinKaus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/911\"\u003eauthlib/authlib#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare lower bounds for dependencies by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/912\"\u003eauthlib/authlib#912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(client): use httpx2 instead of httpx by \u003ca href=\"https://github.com/levinKaus\"\u003e\u003ccode\u003e@​levinKaus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/909\"\u003eauthlib/authlib#909\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RFC7523 malformed claims handling by \u003ca href=\"https://github.com/azmeuk\"\u003e\u003ccode\u003e@​azmeuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/916\"\u003eauthlib/authlib#916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix httpx oauth1 binary form data by \u003ca href=\"https://github.com/shc261392\"\u003e\u003ccode\u003e@​shc261392\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/779\"\u003eauthlib/authlib#779\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(starlette_client): remove default= keyword from config.get calls by \u003ca href=\"https://github.com/aliaksei-protchanka\"\u003e\u003ccode\u003e@​aliaksei-protchanka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/770\"\u003eauthlib/authlib#770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded client_id parameter to AssertionClient by \u003ca href=\"https://github.com/vilmar-hillow\"\u003e\u003ccode\u003e@​vilmar-hillow\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/476\"\u003eauthlib/authlib#476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oauth): save device credential with authenticated client id by \u003ca href=\"https://github.com/arpitjain099\"\u003e\u003ccode\u003e@​arpitjain099\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/908\"\u003eauthlib/authlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oauth1): correct protocol name in InsecureTransportError description by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/919\"\u003eauthlib/authlib#919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(client): client can be flexible with jwt's header by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/922\"\u003eauthlib/authlib#922\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(oidc): omit claims when the value is None by \u003ca href=\"https://github.com/lepture\"\u003e\u003ccode\u003e@​lepture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/923\"\u003eauthlib/authlib#923\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mondi04\"\u003e\u003ccode\u003e@​mondi04\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/903\"\u003eauthlib/authlib#903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/levinKaus\"\u003e\u003ccode\u003e@​levinKaus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/911\"\u003eauthlib/authlib#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aliaksei-protchanka\"\u003e\u003ccode\u003e@​aliaksei-protchanka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/770\"\u003eauthlib/authlib#770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vilmar-hillow\"\u003e\u003ccode\u003e@​vilmar-hillow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/476\"\u003eauthlib/authlib#476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arpitjain099\"\u003e\u003ccode\u003e@​arpitjain099\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/908\"\u003eauthlib/authlib#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/authlib/authlib/pull/919\"\u003eauthlib/authlib#919\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.2...v1.8.0\"\u003ehttps://github.com/authlib/authlib/compare/v1.7.2...v1.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/1a86748b31a2b1940b09cf627d1b70e03d85c077\"\u003e\u003ccode\u003e1a86748\u003c/code\u003e\u003c/a\u003e chore: release 1.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/e4fb941d4959a11e875b34880c41f46ba7cd8c67\"\u003e\u003ccode\u003ee4fb941\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/923\"\u003e#923\u003c/a\u003e from authlib/fix-921\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/9f2cd2e4c8c2d88cd8c7831d2c612ad38a4b0958\"\u003e\u003ccode\u003e9f2cd2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/922\"\u003e#922\u003c/a\u003e from authlib/fix-902\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/5d53239e8a0ca7ea1c241e84bfd5fd453203a94a\"\u003e\u003ccode\u003e5d53239\u003c/code\u003e\u003c/a\u003e fix(oidc): omit claims when the value is None\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/772bc72fe8440e6c5dd0a6615fb42d7466f85546\"\u003e\u003ccode\u003e772bc72\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/919\"\u003e#919\u003c/a\u003e from RavSinghChandan/fix-oauth1-insecure-transport-de...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/11794b00375127bbc4397e7ebd46e047c3935b64\"\u003e\u003ccode\u003e11794b0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/authlib/authlib/issues/908\"\u003e#908\u003c/a\u003e from arpitjain099/chore/device-cred-authenticated-cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/13f2eb0589cec6df53c4e1146b11dc0cdd3012c7\"\u003e\u003ccode\u003e13f2eb0\u003c/code\u003e\u003c/a\u003e fix(client): Added client_id parameter to AssertionClient (\u003ca href=\"https://redirect.github.com/authlib/authlib/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/dde5b7a8015904aba63dad76d7286aa431249783\"\u003e\u003ccode\u003edde5b7a\u003c/code\u003e\u003c/a\u003e fix(client): rollback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/e4aec8c5c1e333951f49ba6aa3fe7487c6fce670\"\u003e\u003ccode\u003ee4aec8c\u003c/code\u003e\u003c/a\u003e fix(client): remove default= keyword from starlette client config.get calls (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/62f41cc2f55c15e658f7a0d2bdcb23feeeb93410\"\u003e\u003ccode\u003e62f41cc\u003c/code\u003e\u003c/a\u003e fix(client): httpx oauth1 binary form data (\u003ca href=\"https://redirect.github.com/authlib/authlib/issues/779\"\u003e#779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.7.2...v1.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.4 to 3.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.1...3.5.2\"\u003e3.5.2\u003c/a\u003e (2026-09-29)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised the Cython upper bound to \u003ccode\u003e\u0026lt;3.4\u003c/code\u003e for native builds. The bound remains \u003ccode\u003e\u0026lt;3.3\u003c/code\u003e for\n\u003ccode\u003eabi3\u003c/code\u003e builds to preserve compatibility with the Python 3.7 Limited API.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValid UTF-8 Chinese JSON incorrectly detected as PTCP154 due to excessive noise penalties\nfor uncommon CJK characters. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupported encodings without aliases failing name resolution or being ignored in charset\ndeclarations. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/935c29ad2d0d6e62fcf3a6e0617c55dc6e85db8f\"\u003e\u003ccode\u003e935c29a\u003c/code\u003e\u003c/a\u003e Release 3.5.2 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9d3238a7ae9676e05ee1da5da826297b374f2282\"\u003e\u003ccode\u003e9d3238a\u003c/code\u003e\u003c/a\u003e test: disable traefik in downstream niquests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b4c0368fdc9183b8e77e39d865328a4a40103750\"\u003e\u003ccode\u003eb4c0368\u003c/code\u003e\u003c/a\u003e docs: write changelog entry for 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/717da3108bf90d979c1485ae55c0b11f2eab650b\"\u003e\u003ccode\u003e717da31\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/264895d4e9313b088c9698f5394278a3c7ab58a7\"\u003e\u003ccode\u003e264895d\u003c/code\u003e\u003c/a\u003e chore: update pypa/cibuildwheel and pypa/gh-action-pypi-publish\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/41e28b6cb19d7ec85560f869cbc2a599c8fc855b\"\u003e\u003ccode\u003e41e28b6\u003c/code\u003e\u003c/a\u003e chore: raise Cython upper bound to 3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b130b7dae36658c7ba67381fe06a62c7c7c03894\"\u003e\u003ccode\u003eb130b7d\u003c/code\u003e\u003c/a\u003e Fix valid UTF-8 Chinese JSON misdetected as PTCP154 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f6afd31c54fe20524f96be00de3bcb0e81727526\"\u003e\u003ccode\u003ef6afd31\u003c/code\u003e\u003c/a\u003e Make the IANA_NO_ALIASES encodings resolvable by name (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/800\"\u003e#800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...3.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.3 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}...\n\n_Description has been truncated_","html_url":"https://github.com/PatrickFanella/rekolekt/pull/43","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PatrickFanella%2Frekolekt/issues/43","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/43/packages"}}]}