{"id":473,"name":"fastapi","ecosystem":"pip","repository_url":"https://github.com/fastapi/fastapi","issues_count":7472,"created_at":"2025-06-06T15:01:34.752Z","updated_at":"2025-06-06T15:01:34.752Z","purl":"pkg:pypi/fastapi","metadata":{"id":2730316,"name":"fastapi","ecosystem":"pypi","description":"FastAPI framework, high performance, easy to learn, fast to code, ready for production","homepage":"https://github.com/fastapi/fastapi","licenses":"MIT License","normalized_licenses":["MIT"],"repository_url":"https://github.com/fastapi/fastapi","keywords_array":[],"namespace":null,"versions_count":221,"first_release_published_at":"2018-12-08T08:14:13.000Z","latest_release_published_at":"2025-03-23T22:55:42.000Z","latest_release_number":"0.115.12","last_synced_at":"2025-06-06T00:13:14.093Z","created_at":"2022-04-10T10:57:43.811Z","updated_at":"2025-06-06T00:13:14.093Z","registry_url":"https://pypi.org/project/fastapi/","install_command":"pip install fastapi --index-url https://pypi.org/simple","documentation_url":"https://fastapi.tiangolo.com/","metadata":{"funding":null,"documentation":"https://fastapi.tiangolo.com/","classifiers":["Development Status :: 4 - Beta","Environment :: Web Environment","Framework :: AsyncIO","Framework :: FastAPI","Framework :: Pydantic","Framework :: Pydantic :: 1","Framework :: Pydantic :: 2","Intended Audience :: Developers","Intended Audience :: Information Technology","Intended Audience :: System Administrators","License :: OSI Approved :: MIT License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Topic :: Internet","Topic :: Internet :: WWW/HTTP","Topic :: Internet :: WWW/HTTP :: HTTP Servers","Topic :: Software Development","Topic :: Software Development :: Libraries","Topic :: Software Development :: Libraries :: Application Frameworks","Topic :: Software Development :: Libraries :: Python Modules","Typing :: Typed"],"normalized_name":"fastapi"},"repo_metadata":{"id":37270611,"uuid":"160919119","full_name":"fastapi/fastapi","owner":"fastapi","description":"FastAPI framework, high performance, easy to learn, fast to code, ready for production","archived":false,"fork":false,"pushed_at":"2024-07-30T01:32:53.000Z","size":22547,"stargazers_count":73985,"open_issues_count":377,"forks_count":6236,"subscribers_count":676,"default_branch":"master","last_synced_at":"2024-07-30T02:39:03.593Z","etag":null,"topics":["api","async","asyncio","fastapi","framework","json","json-schema","openapi","openapi3","pydantic","python","python-types","python3","redoc","rest","starlette","swagger","swagger-ui","uvicorn","web"],"latest_commit_sha":null,"homepage":"https://fastapi.tiangolo.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fastapi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["tiangolo"]}},"created_at":"2018-12-08T08:21:47.000Z","updated_at":"2024-07-30T02:39:11.239Z","dependencies_parsed_at":"2023-12-25T20:10:00.359Z","dependency_job_id":"56b5d4aa-414f-4e5d-8674-5b22833ab3af","html_url":"https://github.com/fastapi/fastapi","commit_stats":{"total_commits":2803,"total_committers":457,"mean_commits":6.133479212253829,"dds":0.5490545843738851,"last_synced_commit":"8ac8d70d52bb0dd9eb55ba4e22d3e383943da05c"},"previous_names":["fastapi/fastapi"],"tags_count":186,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fastapi","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217789799,"owners_count":16230651,"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":"FastAPI","name":null,"uuid":"9926961","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/9926961?v=4","repositories_count":1,"last_synced_at":"2023-02-27T02:25:45.824Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/FastAPI","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-10T11:50:35.703Z","updated_at":"2023-02-27T02:25:45.831Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FastAPI","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FastAPI/repositories"},"tags":[{"name":"0.111.1","sha":"b1993642461031bac9d21dd87e7faf59f19049f6","kind":"commit","published_at":"2024-07-14T17:54:20.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.111.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.111.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.111.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.111.1/manifests"},{"name":"0.111.0","sha":"1c3e6918750ccb3f20ea260e9a4238ce2c0e5f63","kind":"commit","published_at":"2024-05-03T00:20:30.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.111.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.111.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.111.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.111.0/manifests"},{"name":"0.110.3","sha":"32be95dd867386d8331705a3c47d1b8b64bb1c9e","kind":"commit","published_at":"2024-04-30T00:34:06.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.110.3","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.110.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.3/manifests"},{"name":"0.110.2","sha":"be1e3faa63bd6785399d6cd98dbc8417ddd045dc","kind":"commit","published_at":"2024-04-19T00:31:47.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.110.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.110.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.2/manifests"},{"name":"0.110.1","sha":"50a880b39f09217ccb9b4144f9f5c8439af54cfd","kind":"commit","published_at":"2024-04-02T03:17:13.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.110.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.110.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.1/manifests"},{"name":"0.110.0","sha":"e40747f10ae911910e9cb9a9684576f3b21304c9","kind":"commit","published_at":"2024-02-24T23:19:38.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.110.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.110.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.110.0/manifests"},{"name":"0.109.2","sha":"141e34f281ed746431766d712d56d357e306a689","kind":"commit","published_at":"2024-02-04T21:24:21.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.109.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.109.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.109.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.109.2/manifests"},{"name":"0.109.1","sha":"7633d1571cc0c2792b766f67172edb9427c66899","kind":"commit","published_at":"2024-02-03T12:42:30.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.109.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.109.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.109.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.109.1/manifests"},{"name":"0.109.0","sha":"cb95d1cb8927292fc096834a62c3aa46af46e4ee","kind":"commit","published_at":"2024-01-11T15:32:00.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.109.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.109.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.109.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.109.0/manifests"},{"name":"0.108.0","sha":"fe0249a23ebb294be183b3e2cab82addbd68c42c","kind":"commit","published_at":"2023-12-26T20:17:18.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.108.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.108.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.108.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.108.0/manifests"},{"name":"0.107.0","sha":"f933fd6ff8db06ff77be8406ad56b6b07f13a532","kind":"commit","published_at":"2023-12-26T19:04:08.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.107.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.107.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.107.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.107.0/manifests"},{"name":"0.106.0","sha":"5826c4f31f8b6e0d8a289d4c5a6c5a7f8ccb263a","kind":"commit","published_at":"2023-12-25T18:06:04.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.106.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.106.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.106.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.106.0/manifests"},{"name":"0.105.0","sha":"36c26677682c4245183912e00fc057c05cc6cf7a","kind":"commit","published_at":"2023-12-12T00:34:36.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.105.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.105.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.105.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.105.0/manifests"},{"name":"0.104.1","sha":"7e5afe2cb9bf1fa30c04a4dd393ea397a46db29b","kind":"commit","published_at":"2023-10-30T10:04:54.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.104.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.104.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.104.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.104.1/manifests"},{"name":"0.104.0","sha":"38f191dcd30c7e7b7d422b4406f8eb8c6805b09d","kind":"commit","published_at":"2023-10-18T12:51:07.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.104.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.104.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.104.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.104.0/manifests"},{"name":"0.103.2","sha":"1bf5e7a10e33d6f65e0f701ec271785fbc9b463c","kind":"commit","published_at":"2023-09-28T19:57:42.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.103.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.103.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.103.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.103.2/manifests"},{"name":"0.103.1","sha":"bfde8f3ef20dc338bbce8a0ff0f4b441c54d5b64","kind":"commit","published_at":"2023-09-02T17:10:19.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.103.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.103.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.103.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.103.1/manifests"},{"name":"0.103.0","sha":"415eb1405a5bc93a32e14c15d690517c95d26743","kind":"commit","published_at":"2023-08-26T18:10:27.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.103.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.103.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.103.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.103.0/manifests"},{"name":"0.102.0","sha":"9cf9e1084dceb45e50946e4130801012ac0c0c59","kind":"commit","published_at":"2023-08-25T19:18:38.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.102.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.102.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.102.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.102.0/manifests"},{"name":"0.101.1","sha":"63e7edb2951b36b494176e2f6a22819fcd3feb17","kind":"commit","published_at":"2023-08-14T10:03:14.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.101.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.101.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.101.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.101.1/manifests"},{"name":"0.101.0","sha":"8adbafc0760c9fd0d97da748545b3a5f92dbb0ea","kind":"commit","published_at":"2023-08-04T21:00:17.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.101.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.101.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.101.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.101.0/manifests"},{"name":"0.100.1","sha":"8d2723664801c32e6174cd87812fb92e850cfa4b","kind":"commit","published_at":"2023-07-27T19:16:01.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.100.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.100.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.1/manifests"},{"name":"0.100.0","sha":"f8356d9fffcc728062cc4dbfc905882969bd5123","kind":"commit","published_at":"2023-07-07T17:25:59.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.100.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0/manifests"},{"name":"0.100.0-beta3","sha":"d1622447eec3414e730d58bb11719b5d93770b91","kind":"commit","published_at":"2023-07-05T17:49:48.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.100.0-beta3","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.100.0-beta3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0-beta3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0-beta3/manifests"},{"name":"0.99.1","sha":"dd4e78ca7b09abdf0d4646fe4697316c021a8b2e","kind":"commit","published_at":"2023-07-02T16:00:39.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.99.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.99.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.99.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.99.1/manifests"},{"name":"0.100.0-beta2","sha":"1d8d8925fc50ef7d318c1c8633df4ecb397bca37","kind":"commit","published_at":"2023-06-30T19:50:18.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.100.0-beta2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.100.0-beta2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0-beta2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0-beta2/manifests"},{"name":"0.99.0","sha":"983f1d34dbc9443fcd12159647aabdeabc5032a7","kind":"commit","published_at":"2023-06-30T18:55:17.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.99.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.99.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.99.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.99.0/manifests"},{"name":"0.98.0","sha":"4721405ef7c970bf3ba08259546dcc0b87cf22c0","kind":"commit","published_at":"2023-06-22T17:58:22.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.98.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.98.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.98.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.98.0/manifests"},{"name":"0.100.0-beta1","sha":"6dc975da9dd4804c1fa3a9c8533bd339b63eee0e","kind":"commit","published_at":"2023-06-20T16:22:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.100.0-beta1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.100.0-beta1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0-beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.100.0-beta1/manifests"},{"name":"0.97.0","sha":"32935103b12b1548117abef0b4af9dd883898308","kind":"commit","published_at":"2023-06-11T22:50:06.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.97.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.97.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.97.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.97.0/manifests"},{"name":"0.96.1","sha":"19347bfc3cd1d3dcf3d8216c642033dcb9a3d6d5","kind":"commit","published_at":"2023-06-10T21:51:40.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.96.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.96.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.96.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.96.1/manifests"},{"name":"0.96.0","sha":"1574c9623103d03d27117f64b937d754cba12584","kind":"commit","published_at":"2023-06-03T14:29:23.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.96.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.96.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.96.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.96.0/manifests"},{"name":"0.95.2","sha":"8cc967a7605d3883bd04ceb5d25cc94ae079612f","kind":"commit","published_at":"2023-05-16T13:39:43.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.95.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.95.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.95.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.95.2/manifests"},{"name":"0.95.1","sha":"c81e136d75f5ac4252df740b35551cf2afb4c7f1","kind":"commit","published_at":"2023-04-13T19:04:52.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.95.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.95.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.95.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.95.1/manifests"},{"name":"0.95.0","sha":"d666ccb62216e45ca78643b52c235ba0d2c53986","kind":"commit","published_at":"2023-03-18T19:37:42.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.95.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.95.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.95.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.95.0/manifests"},{"name":"0.94.1","sha":"ef176c663195489b44030bfe1fb94a317762c8d5","kind":"commit","published_at":"2023-03-14T02:27:11.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.94.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.94.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.94.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.94.1/manifests"},{"name":"0.94.0","sha":"392ffaae43d11838ece62acfa8bb50e5d2f5ca05","kind":"commit","published_at":"2023-03-10T19:00:49.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.94.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.94.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.94.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.94.0/manifests"},{"name":"0.93.0","sha":"25382d2d194bc3050d09e040889d30f5d64a5d27","kind":"commit","published_at":"2023-03-07T16:06:47.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.93.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.93.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.93.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.93.0/manifests"},{"name":"0.92.0","sha":"6879082b3668edd213d035b6e9a90a4bccf32e01","kind":"commit","published_at":"2023-02-14T09:17:53.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.92.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.92.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.92.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.92.0/manifests"},{"name":"0.91.0","sha":"2ca77f9a4de14de08ed6615ad0bb783a078678f2","kind":"commit","published_at":"2023-02-10T14:33:25.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.91.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.91.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.91.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.91.0/manifests"},{"name":"0.90.1","sha":"6e94ec2bf089740a2cc1a71883ef24e0e8029c4a","kind":"commit","published_at":"2023-02-09T19:41:40.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.90.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.90.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.90.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.90.1/manifests"},{"name":"0.90.0","sha":"148bcf5ce4c0fb58e8d9431291d1d6e004a4afe6","kind":"commit","published_at":"2023-02-08T10:30:01.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.90.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.90.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.90.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.90.0/manifests"},{"name":"0.89.1","sha":"5905c3f740c8590f1a370e36b99b760f1ee7b828","kind":"commit","published_at":"2023-01-10T16:31:23.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.89.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.89.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.89.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.89.1/manifests"},{"name":"0.89.0","sha":"69bd7d8501fe77601ebd67f55b39596fdd1e3792","kind":"commit","published_at":"2023-01-07T17:17:10.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.89.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.89.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.89.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.89.0/manifests"},{"name":"0.88.0","sha":"612b8ff168beee33fcf0c0bdff9718b4c8b1ac63","kind":"commit","published_at":"2022-11-27T14:50:32.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.88.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.88.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.88.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.88.0/manifests"},{"name":"0.87.0","sha":"63a5ffcf577abc6015d021f65857b3826d8db74e","kind":"commit","published_at":"2022-11-13T21:36:53.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.87.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.87.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.87.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.87.0/manifests"},{"name":"0.86.0","sha":"ccd242348fb9e7e214d5cb2ff7f6c5996f96e4dc","kind":"commit","published_at":"2022-11-03T21:17:44.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.86.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.86.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.86.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.86.0/manifests"},{"name":"0.85.2","sha":"d0917ce01566c7b04f2c09fce81e87e122aa915c","kind":"commit","published_at":"2022-10-31T18:57:16.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.85.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.85.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.85.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.85.2/manifests"},{"name":"0.85.1","sha":"90fc4299d1d24a54dda8bf6f01cf3779ce6cf467","kind":"commit","published_at":"2022-10-14T20:52:36.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.85.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.85.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.85.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.85.1/manifests"},{"name":"0.85.0","sha":"12132276672c51412f3fc38bd5e228cf4a87ecfb","kind":"commit","published_at":"2022-09-15T13:57:23.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.85.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.85.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.85.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.85.0/manifests"},{"name":"0.84.0","sha":"1073062c7f2c48bcc28bcedbdc009c18c171f6fb","kind":"commit","published_at":"2022-09-14T18:41:29.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.84.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.84.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.84.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.84.0/manifests"},{"name":"0.83.0","sha":"b2aa3593be300b57973987fb2489ed01ed9c9f68","kind":"commit","published_at":"2022-09-11T16:26:30.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.83.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.83.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.83.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.83.0/manifests"},{"name":"0.82.0","sha":"3079ba925ec04ce2a630d3d919a1308b48a45df0","kind":"commit","published_at":"2022-09-04T19:26:31.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.82.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.82.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.82.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.82.0/manifests"},{"name":"0.81.0","sha":"0bb8920ae1298e178b29ccf8a2dab4486c09143d","kind":"commit","published_at":"2022-08-26T15:18:44.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.81.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.81.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.81.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.81.0/manifests"},{"name":"0.80.0","sha":"7d6e70791d0d4c5cf271bcd231ba78d1a3c0f582","kind":"commit","published_at":"2022-08-23T14:14:48.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.80.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.80.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.80.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.80.0/manifests"},{"name":"0.79.1","sha":"ab8988ff7c5bb2ec25d41ba8c8687114962e0986","kind":"commit","published_at":"2022-08-18T21:14:07.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.79.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.79.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.79.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.79.1/manifests"},{"name":"0.79.0","sha":"50fb34bf55c1711e3753363ab6427d77be25dbb6","kind":"commit","published_at":"2022-07-14T17:35:13.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.79.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.79.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.79.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.79.0/manifests"},{"name":"0.78.0","sha":"1876ebc77949a9a254909ec61ea0c09365169ec2","kind":"commit","published_at":"2022-05-14T19:58:04.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.78.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.78.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.78.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.78.0/manifests"},{"name":"0.77.1","sha":"2aaac141ddb79d1f9071f8e02d2b2097f3d4589f","kind":"commit","published_at":"2022-05-10T04:19:32.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.77.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.77.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.77.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.77.1/manifests"},{"name":"0.77.0","sha":"069645444547cdfb083f84e84982f03fb4e597cf","kind":"commit","published_at":"2022-05-10T01:40:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.77.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.77.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.77.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.77.0/manifests"},{"name":"0.76.0","sha":"9090c771eea9a51b17d0eb76dd060edd9f2e640e","kind":"commit","published_at":"2022-05-05T22:26:05.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.76.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.76.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.76.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.76.0/manifests"},{"name":"0.75.2","sha":"2b54432a9c78730b0dd69fca8f15d932d5a31d6b","kind":"commit","published_at":"2022-04-17T21:08:37.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.75.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.75.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.75.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.75.2/manifests"},{"name":"0.75.1","sha":"26f725d259c5dbe3654f221e608b14412c6b40da","kind":"commit","published_at":"2022-04-01T23:05:52.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.75.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.75.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.75.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.75.1/manifests"},{"name":"0.75.0","sha":"c89dc736bd576bc1a9e2bb893576b59c6b906b97","kind":"commit","published_at":"2022-03-04T22:11:21.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.75.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.75.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.75.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.75.0/manifests"},{"name":"0.74.1","sha":"440d2d2d1a72867b3f38b5c7359e021cccbfea8b","kind":"commit","published_at":"2022-02-21T15:54:18.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.74.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.74.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.74.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.74.1/manifests"},{"name":"0.74.0","sha":"1ce16c2f40a75a4d97233bf4e331ed563eda47cf","kind":"commit","published_at":"2022-02-17T16:08:23.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.74.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.74.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.74.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.74.0/manifests"},{"name":"0.73.0","sha":"291180bf2d8c39e84860c2426b1d58b6c80f6fef","kind":"commit","published_at":"2022-01-23T22:38:51.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.73.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.73.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.73.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.73.0/manifests"},{"name":"0.72.0","sha":"f0388915a8b1cd9f3ae2259bace234ac6249c51a","kind":"commit","published_at":"2022-01-16T20:09:10.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.72.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.72.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.72.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.72.0/manifests"},{"name":"0.71.0","sha":"672c55ac626b20cc6219696023cdcc5871e5141d","kind":"commit","published_at":"2022-01-07T17:07:59.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.71.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.71.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.71.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.71.0/manifests"},{"name":"0.70.1","sha":"3efb4f7edff99fdc12802a85ae9d140ec4772497","kind":"commit","published_at":"2021-12-12T11:39:32.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.70.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.70.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.70.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.70.1/manifests"},{"name":"0.70.0","sha":"864643ef7608d28ac4ed321835a7fb4abe3dfc13","kind":"commit","published_at":"2021-10-07T17:38:36.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.70.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.70.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.70.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.70.0/manifests"},{"name":"0.69.0","sha":"921b6f742ad6b53e6b5e90dfeec3fa7570041921","kind":"commit","published_at":"2021-10-07T16:45:43.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.69.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.69.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.69.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.69.0/manifests"},{"name":"0.68.2","sha":"378fa4ef755a0f814cd61daf571466fde3af9b05","kind":"commit","published_at":"2021-10-05T13:32:18.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.68.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.68.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.68.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.68.2/manifests"},{"name":"0.68.1","sha":"7b6e198d314e320256c2ed8b62430b2a42c31cb5","kind":"commit","published_at":"2021-08-24T12:16:09.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.68.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.68.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.68.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.68.1/manifests"},{"name":"0.68.0","sha":"717a1ec40992d00e34635f0b4c9b68ab5a6daef7","kind":"commit","published_at":"2021-07-29T21:03:57.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.68.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.68.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.68.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.68.0/manifests"},{"name":"0.67.0","sha":"a0209a0d2c26628809fd885a4c211c6248082921","kind":"commit","published_at":"2021-07-21T18:00:39.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.67.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.67.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.67.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.67.0/manifests"},{"name":"0.66.1","sha":"0a38c51b9edfaec5f1d49d01247dc2b8467f5dc1","kind":"commit","published_at":"2021-07-19T19:26:52.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.66.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.66.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.66.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.66.1/manifests"},{"name":"0.66.0","sha":"7e9d5aacf8044728e09e6c16e4104fc96b8cea28","kind":"commit","published_at":"2021-07-04T18:59:46.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.66.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.66.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.66.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.66.0/manifests"},{"name":"0.65.3","sha":"79f52c76cf19d1c3f37707049c1cd0c3ca33e7b8","kind":"commit","published_at":"2021-07-03T16:33:32.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.65.3","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.65.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.3/manifests"},{"name":"0.65.2","sha":"4d91f978d265a5050baeb3d4b3618c2f5cb7995a","kind":"commit","published_at":"2021-06-09T08:17:27.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.65.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.65.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.2/manifests"},{"name":"0.65.1","sha":"43df5d05edd30fdeb16a9f5b26c02d4f47bdd8cb","kind":"commit","published_at":"2021-05-11T21:19:14.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.65.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.65.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.1/manifests"},{"name":"0.65.0","sha":"b890bd1dc50622ebca8e984c03a055043a882302","kind":"commit","published_at":"2021-05-10T15:45:21.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.65.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.65.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.65.0/manifests"},{"name":"0.64.0","sha":"2a673211302e7ea269fa05e06775f76578851591","kind":"commit","published_at":"2021-05-07T08:15:26.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.64.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.64.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.64.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.64.0/manifests"},{"name":"0.63.0","sha":"5614b94ccc9f72f1de2f63aae63f5fe90b86c8b5","kind":"commit","published_at":"2020-12-20T19:18:06.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.63.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.63.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.63.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.63.0/manifests"},{"name":"0.62.0","sha":"51e920e2fcf3e2a715081f28e3187549f2bf531a","kind":"commit","published_at":"2020-11-29T18:36:38.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.62.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.62.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.62.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.62.0/manifests"},{"name":"0.61.2","sha":"77f7447ee8917697e702b7eca8d393e11dc1e365","kind":"commit","published_at":"2020-11-05T23:14:52.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.61.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.61.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.61.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.61.2/manifests"},{"name":"0.61.1","sha":"e77ea635777d2494690ba3eb62bd005b9edeefde","kind":"commit","published_at":"2020-08-29T14:30:50.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.61.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.61.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.61.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.61.1/manifests"},{"name":"0.61.0","sha":"a6897963d5ff2c836313c3b69fc6062051c07a63","kind":"commit","published_at":"2020-08-09T20:36:47.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.61.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.61.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.61.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.61.0/manifests"},{"name":"0.60.2","sha":"79e08a2541e4f20b245e23367b7814ecb4785ed6","kind":"commit","published_at":"2020-08-08T18:23:16.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.60.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.60.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.60.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.60.2/manifests"},{"name":"0.60.1","sha":"f64c44832979f57a8246b29e4c683f6e8e78a81b","kind":"commit","published_at":"2020-07-22T06:44:44.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.60.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.60.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.60.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.60.1/manifests"},{"name":"0.60.0","sha":"0f546573779535f1c76b797f56082c9f72cc24e6","kind":"commit","published_at":"2020-07-20T16:26:56.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.60.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.60.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.60.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.60.0/manifests"},{"name":"0.59.0","sha":"d60dd1b60e0acd0afcd5688e5759f450b6e7340c","kind":"commit","published_at":"2020-07-10T18:41:35.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.59.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.59.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.59.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.59.0/manifests"},{"name":"0.58.1","sha":"3ff504f03fb5ba852def5a0a41653c6bed7efb1b","kind":"commit","published_at":"2020-06-28T21:48:30.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.58.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.58.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.58.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.58.1/manifests"},{"name":"0.58.0","sha":"b87072bc1296a26d982207935b23ef67323a238e","kind":"commit","published_at":"2020-06-15T11:18:36.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.58.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.58.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.58.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.58.0/manifests"},{"name":"0.57.0","sha":"34c857b7cb493fa41f296c001234bc6b2ed6a083","kind":"commit","published_at":"2020-06-13T21:13:25.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.57.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.57.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.57.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.57.0/manifests"},{"name":"0.56.1","sha":"8231fbede410ae2eab18b3dd18afc8f74a71f84d","kind":"commit","published_at":"2020-06-12T23:17:06.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.56.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.56.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.56.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.56.1/manifests"},{"name":"0.56.0","sha":"072c2bc7f9d4900c8afe75f2775942a63325c569","kind":"commit","published_at":"2020-06-11T22:22:17.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.56.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.56.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.56.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.56.0/manifests"},{"name":"0.55.1","sha":"8d844bc5cff051cdcef533d811204beb5aedf2f3","kind":"commit","published_at":"2020-05-23T16:59:14.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.55.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.55.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.55.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.55.1/manifests"},{"name":"0.55.0","sha":"98bb9f13da4932fac8bc138f77fba38c34e553ee","kind":"commit","published_at":"2020-05-23T14:06:32.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.55.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.55.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.55.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.55.0/manifests"},{"name":"0.54.2","sha":"f7eea768f66780098a9be3e099201e464b84e9ff","kind":"commit","published_at":"2020-05-16T19:00:28.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.54.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.54.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.54.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.54.2/manifests"},{"name":"0.54.1","sha":"d4f3ca1c1b471a25634a7114f71a7cdd7a0ac18a","kind":"commit","published_at":"2020-04-08T05:51:26.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.54.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.54.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.54.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.54.1/manifests"},{"name":"0.54.0","sha":"7372f6ba11abb515a7f11814dba52a1d1c0925f0","kind":"commit","published_at":"2020-04-05T14:50:16.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.54.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.54.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.54.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.54.0/manifests"},{"name":"0.53.2","sha":"6e1cd45a46ed4940e37bc3c47d27b9788349ba10","kind":"commit","published_at":"2020-03-30T19:49:50.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.53.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.53.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.53.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.53.2/manifests"},{"name":"0.53.1","sha":"e6b3b994be71896c9228be78aba3def8f02ca9e8","kind":"commit","published_at":"2020-03-29T20:08:54.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.53.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.53.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.53.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.53.1/manifests"},{"name":"0.53.0","sha":"56e43ba204e6a7f2f7468d55c8cc835e7b5616c7","kind":"commit","published_at":"2020-03-27T16:56:41.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.53.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.53.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.53.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.53.0/manifests"},{"name":"0.52.0","sha":"025b38df40a18f94322fab445aee13024fe783da","kind":"commit","published_at":"2020-03-01T21:34:38.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.52.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.52.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.52.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.52.0/manifests"},{"name":"0.51.0","sha":"cf760d6802d33d6fd3c72bcd6d57029419fdb33a","kind":"commit","published_at":"2020-03-01T21:02:51.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.51.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.51.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.51.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.51.0/manifests"},{"name":"0.50.0","sha":"f2bd2c44e2e568576ad92f49b82c99bf686dc658","kind":"commit","published_at":"2020-02-29T20:49:09.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.50.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.50.0/manifests"},{"name":"0.49.2","sha":"d4ddf4e62a2188082b0be3cfb5372c51c3395280","kind":"commit","published_at":"2020-02-29T17:19:52.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.49.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.49.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.49.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.49.2/manifests"},{"name":"0.49.1","sha":"9958d9312005f569ad310f71a503186a7fac83db","kind":"commit","published_at":"2020-02-28T21:48:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.49.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.49.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.49.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.49.1/manifests"},{"name":"0.49.0","sha":"9c3c9b6e78768374868d690bc05918d58481e880","kind":"commit","published_at":"2020-02-16T20:11:28.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.49.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.49.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.49.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.49.0/manifests"},{"name":"0.48.0","sha":"d91b2b3ee8fa428544769aba664aedbf9ed6511a","kind":"commit","published_at":"2020-02-04T04:43:07.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.48.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.48.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.48.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.48.0/manifests"},{"name":"0.47.1","sha":"a0858983096cad68c1de7d67085b547354990791","kind":"commit","published_at":"2020-01-18T17:06:47.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.47.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.47.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.47.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.47.1/manifests"},{"name":"0.47.0","sha":"3a5158a784d7baaf370dff700913ab559e361213","kind":"commit","published_at":"2020-01-18T16:14:59.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.47.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.47.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.47.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.47.0/manifests"},{"name":"0.46.0","sha":"a9673f145a6bf0f87ec5f934e6337984d619bd96","kind":"commit","published_at":"2020-01-08T22:28:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.46.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.46.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.46.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.46.0/manifests"},{"name":"0.45.0","sha":"c7c69586ae05d10ef08b9130150409b972baba75","kind":"commit","published_at":"2019-12-11T17:05:19.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.45.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.45.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.45.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.45.0/manifests"},{"name":"0.44.1","sha":"90236c813550030040474a7714428cf1fcc4f582","kind":"commit","published_at":"2019-12-04T23:17:04.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.44.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.44.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.44.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.44.1/manifests"},{"name":"0.44.0","sha":"cc4c13e4ae3f65fc76c23962b316df4a60e0c7e0","kind":"commit","published_at":"2019-11-27T21:16:29.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.44.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.44.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.44.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.44.0/manifests"},{"name":"0.43.0","sha":"90a5796b9435ca0c3d58166c9ba6c63682c1f7e8","kind":"commit","published_at":"2019-11-24T17:56:11.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.43.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.43.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.43.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.43.0/manifests"},{"name":"0.42.0","sha":"65536cbf63318d111bf608960378d651b6c1596a","kind":"commit","published_at":"2019-10-09T18:16:45.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.42.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.42.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.42.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.42.0/manifests"},{"name":"0.41.0","sha":"5592fa0f6f6b9c9b3ae774d80adb8163fcdedfdf","kind":"commit","published_at":"2019-10-07T11:44:07.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.41.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.41.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.41.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.41.0/manifests"},{"name":"0.40.0","sha":"fdb6d43e103bcf7a7325d796e37c9435c9460e4c","kind":"commit","published_at":"2019-10-04T20:38:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.40.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.40.0/manifests"},{"name":"0.39.0","sha":"78272ac1f32bce5c972633006d301d16557eee9e","kind":"commit","published_at":"2019-09-29T22:17:44.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.39.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.39.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.39.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.39.0/manifests"},{"name":"0.38.1","sha":"580cf8f4e2aac3d4f298fbb3ca1426f9ea6265de","kind":"commit","published_at":"2019-09-01T12:56:37.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.38.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.38.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.38.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.38.1/manifests"},{"name":"0.38.0","sha":"203e10596f7de81eda52925113440ebc9a1278a0","kind":"commit","published_at":"2019-08-31T01:40:50.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.38.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.38.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.38.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.38.0/manifests"},{"name":"0.37.0","sha":"53da56146ec5c2933b9844d7a1f9fd910b31158c","kind":"commit","published_at":"2019-08-31T00:10:43.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.37.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.37.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.37.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.37.0/manifests"},{"name":"0.36.0","sha":"417a3ab140b0017b4a4462fa08816e1bd9e629fd","kind":"commit","published_at":"2019-08-26T13:28:33.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.36.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.36.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.36.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.36.0/manifests"},{"name":"0.35.0","sha":"033bc2a6c9aec3a245eb1f1b4fadb2fbb7a514b8","kind":"commit","published_at":"2019-08-07T19:12:15.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.35.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.35.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.35.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.35.0/manifests"},{"name":"0.34.0","sha":"bf229ad5d830eb5320f966d51a55e590e8d57008","kind":"commit","published_at":"2019-08-06T12:22:06.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.34.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.34.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.34.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.34.0/manifests"},{"name":"0.33.0","sha":"6bf3ab3b7aa84b0f4c766284a84fcb9137493ff8","kind":"commit","published_at":"2019-07-13T00:01:27.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.33.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.33.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.33.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.33.0/manifests"},{"name":"0.32.0","sha":"e620aeb46d8fc832c170d829e3d1c9f62d819b76","kind":"commit","published_at":"2019-07-12T23:32:30.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.32.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.32.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.32.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.32.0/manifests"},{"name":"0.31.0","sha":"b30cca8e9e39461db35cea41967eb206dd51387d","kind":"commit","published_at":"2019-06-28T15:01:04.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.31.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.31.0/manifests"},{"name":"0.30.1","sha":"54368e7b229d16a5e10ee790009cb78f1d58c9c7","kind":"commit","published_at":"2019-06-28T07:39:29.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.30.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.30.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.30.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.30.1/manifests"},{"name":"0.30.0","sha":"76b6fd5c1880f39d13104574752f9890c636f5f4","kind":"commit","published_at":"2019-06-20T10:32:24.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.30.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.30.0/manifests"},{"name":"0.29.1","sha":"c26f1760d474f8240d2311ae16a9f17c9fbbae9b","kind":"commit","published_at":"2019-06-13T16:47:43.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.29.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.29.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.29.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.29.1/manifests"},{"name":"0.29.0","sha":"7244e4b61290742993e55caaf6f334634e7a9503","kind":"commit","published_at":"2019-06-06T10:31:50.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.29.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.29.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.29.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.29.0/manifests"},{"name":"0.28.0","sha":"c8eea096644c07c4b45e1d3fdafbc57b47ad4dfa","kind":"commit","published_at":"2019-06-05T17:20:12.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.28.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.28.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.28.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.28.0/manifests"},{"name":"0.27.2","sha":"e2fadcbc90fcffadfb4384396cfbd3b121053948","kind":"commit","published_at":"2019-06-03T18:03:24.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.27.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.27.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.27.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.27.2/manifests"},{"name":"0.27.1","sha":"2a7ef5504ac4f6233d1e7f54f968804c6f1934fb","kind":"commit","published_at":"2019-06-03T14:44:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.27.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.27.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.27.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.27.1/manifests"},{"name":"0.27.0","sha":"9da626eb2cb02595a7c25129fa5afa4ea772581f","kind":"commit","published_at":"2019-05-30T13:48:52.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.27.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.27.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.27.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.27.0/manifests"},{"name":"0.26.0","sha":"83b1a117cc2c5165ec3019722aa89e0444cded3d","kind":"commit","published_at":"2019-05-29T15:29:44.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.26.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.26.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.26.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.26.0/manifests"},{"name":"0.25.0","sha":"3986f79029be90dd0d505b742988340fde6763fb","kind":"commit","published_at":"2019-05-27T16:21:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.25.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.25.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.25.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.25.0/manifests"},{"name":"0.24.0","sha":"67f8cb3b4f0e931547f016a701861aacfff2f424","kind":"commit","published_at":"2019-05-24T18:48:27.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.24.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.24.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.24.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.24.0/manifests"},{"name":"0.23.0","sha":"fc89eb8f81dbce31e783d9d3737bca98c9c0b840","kind":"commit","published_at":"2019-05-21T19:26:28.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.23.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.23.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.23.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.23.0/manifests"},{"name":"0.22.0","sha":"56ab106bbbf8054af437821c6683491ca7952c3b","kind":"commit","published_at":"2019-05-16T14:09:11.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.22.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.22.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.22.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.22.0/manifests"},{"name":"0.21.0","sha":"7b2993682f94c4fc9b56549bb00de641c361954c","kind":"commit","published_at":"2019-05-15T10:54:46.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.21.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.21.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.21.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.21.0/manifests"},{"name":"0.20.1","sha":"5189c93d851dfcc56d9b49f6ba66665f737b0a69","kind":"commit","published_at":"2019-05-11T15:38:08.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.20.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.20.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.20.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.20.1/manifests"},{"name":"0.20.0","sha":"7f673cf4e94667eddf15ef724146e5792d9eb82e","kind":"commit","published_at":"2019-04-27T13:51:31.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.20.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.20.0/manifests"},{"name":"0.19.0","sha":"8e3a7699a3cabbe35f2c45b915167c2adf69b476","kind":"commit","published_at":"2019-04-26T09:48:30.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.19.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.19.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.19.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.19.0/manifests"},{"name":"0.18.0","sha":"8880c4cb033572c9d97c9c79b44fcd15d2128389","kind":"commit","published_at":"2019-04-22T17:08:43.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.18.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.18.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.18.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.18.0/manifests"},{"name":"0.17.0","sha":"26e3dffb37294a178ffc58b38e1f56f88627a1a1","kind":"commit","published_at":"2019-04-20T18:16:07.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.17.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.17.0/manifests"},{"name":"0.16.0","sha":"cefe6cf92c77ebea5d7f4823ee17c64e3900c4fb","kind":"commit","published_at":"2019-04-16T19:28:13.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.16.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.16.0/manifests"},{"name":"0.15.0","sha":"4c3cf31730f992522325ca0fc8361b279dd6d49f","kind":"commit","published_at":"2019-04-14T18:14:20.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.15.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.15.0/manifests"},{"name":"0.14.0","sha":"08484603ee351d1b72eaa0053bf7ae7231e30e3c","kind":"commit","published_at":"2019-04-12T17:56:22.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.14.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.14.0/manifests"},{"name":"0.13.0","sha":"1b8bbd51d8c308846f52c70fd438980d29ace61f","kind":"commit","published_at":"2019-04-09T19:38:11.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.13.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.13.0/manifests"},{"name":"0.12.1","sha":"6a274d18b4c1c0a710429102a9e520d56d381c5b","kind":"commit","published_at":"2019-04-05T16:08:36.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.12.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.12.1/manifests"},{"name":"0.12.0","sha":"e68a68c97c136b75a963c9d5e77d552622384141","kind":"commit","published_at":"2019-04-05T10:35:01.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.12.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.12.0/manifests"},{"name":"0.11.0","sha":"c59ddc8a24a6f45dcef5731b093154b49258044e","kind":"commit","published_at":"2019-04-03T11:51:44.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.11.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.11.0/manifests"},{"name":"0.10.3","sha":"deff2b6678ca7636683d814efe5dbec917910d7c","kind":"commit","published_at":"2019-03-30T17:54:00.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.10.3","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.10.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.3/manifests"},{"name":"0.10.2","sha":"825f397918487430698bb64be84be0af55eb407a","kind":"commit","published_at":"2019-03-29T11:17:34.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.10.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.10.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.2/manifests"},{"name":"0.10.1","sha":"b0f7961b65a8c3e1135d0151c435c3cf4a349359","kind":"commit","published_at":"2019-03-25T18:21:59.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.10.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.1/manifests"},{"name":"0.10.0","sha":"5a6e47bd495b7ee0bb2f4eb6dce570686c21c554","kind":"commit","published_at":"2019-03-24T19:37:37.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.10.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.10.0/manifests"},{"name":"0.9.1","sha":"9778542ba65a5768fef74624f7d02443e908fab5","kind":"commit","published_at":"2019-03-22T17:52:37.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.9.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.9.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.9.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.9.1/manifests"},{"name":"0.9.0","sha":"4f852878d6fb703487b0df8410b58f7b311ab18e","kind":"commit","published_at":"2019-03-22T12:29:33.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.9.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.9.0/manifests"},{"name":"0.8.0","sha":"a174f0190120302492b85b8d19955bf677175117","kind":"commit","published_at":"2019-03-16T17:24:26.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.8.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.8.0/manifests"},{"name":"0.7.1","sha":"ac2b18bf40c3b24ae5f7998d236a342f2888f9ff","kind":"commit","published_at":"2019-03-04T16:07:11.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.7.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.7.1/manifests"},{"name":"0.7.0","sha":"c14ec50f7386d43b6a731d9448b6f95fd43381ad","kind":"commit","published_at":"2019-03-03T17:06:42.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.7.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.7.0/manifests"},{"name":"0.6.4","sha":"1f03e85f06aa71ad1704a56d56b734fbac5a016f","kind":"commit","published_at":"2019-03-02T18:33:48.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.6.4","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.4/manifests"},{"name":"0.6.3","sha":"daaf654868636e4439b3b89df40317a989f33de5","kind":"commit","published_at":"2019-02-23T21:49:04.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.6.3","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.3/manifests"},{"name":"0.6.2","sha":"9e610030fb3da98fc7bbbdd8d1f642da73501cd8","kind":"commit","published_at":"2019-02-23T21:12:33.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.6.2","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.2/manifests"},{"name":"0.6.1","sha":"22f4e18cdd04e5d98eb8f20df6e5d581a747807e","kind":"commit","published_at":"2019-02-20T18:02:19.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.6.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.1/manifests"},{"name":"0.6.0","sha":"bf535181412f253a7af9c689b7f3d10913ecf367","kind":"commit","published_at":"2019-02-19T17:22:51.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.6.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.6.0/manifests"},{"name":"0.5.1","sha":"88b31e6a4d74cd326bd5037fba32ce564ff2a59f","kind":"commit","published_at":"2019-02-18T18:52:03.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.5.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.5.1/manifests"},{"name":"0.5.0","sha":"894e131e03ede4a68a037a62d9ea77c82f4fce3b","kind":"commit","published_at":"2019-02-16T13:06:31.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.5.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.5.0/manifests"},{"name":"0.4.0","sha":"acbcbba94f444e714fac8a522d7190904d6e3544","kind":"commit","published_at":"2019-02-14T19:04:55.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.4.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.4.0/manifests"},{"name":"0.3.0","sha":"783816a7e3dea494a1d60b8d26c53a6bf526494b","kind":"commit","published_at":"2019-02-12T19:07:54.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.3.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.3.0/manifests"},{"name":"0.2.1","sha":"9484f939ed9c27022352e295ea053310fc343a8b","kind":"commit","published_at":"2019-02-12T17:46:35.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.2.1","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"92c825be6a7362099400c9c3fe8b01ea13add3dc","kind":"commit","published_at":"2019-02-08T12:09:48.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.2.0","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.2.0/manifests"},{"name":"0.1.19","sha":"6d9fc08a7e6bcb9f78e677ba6992ef0f1a17ccb4","kind":"commit","published_at":"2019-02-01T10:23:20.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.1.19","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.1.19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.19/manifests"},{"name":"0.1.17","sha":"e5b341c7ddbd085e7203276398bdf10a1d86446b","kind":"commit","published_at":"2019-01-05T13:38:59.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.1.17","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.1.17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.17/manifests"},{"name":"v0.1.16","sha":"3c08b05ea6b58b3e5564c026f071cbb0979a6797","kind":"commit","published_at":"2018-12-30T17:46:49.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/v0.1.16","html_url":"https://github.com/fastapi/fastapi/releases/tag/v0.1.16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/v0.1.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/v0.1.16/manifests"},{"name":"0.1.15","sha":"5278314f2fbf95d711e94e14e2a5c8becde7e841","kind":"commit","published_at":"2018-12-28T16:40:40.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.1.15","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.1.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.15/manifests"},{"name":"0.1.14","sha":"098e629344bde573865ac96b24f7beb6689759b0","kind":"commit","published_at":"2018-12-24T16:21:28.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.1.14","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.1.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.14/manifests"},{"name":"0.1.13","sha":"bc3e7f2bbc9acfcf8b6fd57854b68e1ac8a9c560","kind":"commit","published_at":"2018-12-24T05:35:20.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.1.13","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.1.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.13/manifests"},{"name":"0.1.12","sha":"b097a538ab4da1812ac73fe2d7f63fab6b351e5c","kind":"commit","published_at":"2018-12-21T12:33:45.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.1.12","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.1.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.12/manifests"},{"name":"0.1.11","sha":"45ccf059ed352b12061235ef0dd794640abdc69c","kind":"commit","published_at":"2018-12-15T17:59:25.000Z","download_url":"https://codeload.github.com/fastapi/fastapi/tar.gz/0.1.11","html_url":"https://github.com/fastapi/fastapi/releases/tag/0.1.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Ffastapi/tags/0.1.11/manifests"}]},"repo_metadata_updated_at":"2024-09-08T13:47:38.940Z","dependent_packages_count":2920,"downloads":98524044,"downloads_period":"last-month","dependent_repos_count":43608,"rankings":{"downloads":0.023477321457721564,"dependent_repos_count":0.030997400987148,"dependent_packages_count":0.01192207730274923,"stargazers_count":0.028979818674375053,"forks_count":0.1546201717879631,"docker_downloads_count":0.38095622396631,"average":0.10515883569604449},"purl":"pkg:pypi/fastapi","advisories":[{"uuid":"MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLThoMmotY2d4OC02eHY3","url":"https://github.com/advisories/GHSA-8h2j-cgx8-6xv7","title":"Cross-Site Request Forgery (CSRF) in FastAPI","description":"### Impact\n\nFastAPI versions lower than `0.65.2` that used cookies for authentication in path operations that received JSON payloads sent by browsers were vulnerable to a Cross-Site Request Forgery (CSRF) attack.\n\nIn versions lower than `0.65.2`, FastAPI would try to read the request payload as JSON even if the `content-type` header sent was not set to `application/json` or a compatible JSON media type (e.g. `application/geo+json`).\n\nSo, a request with a content type of `text/plain` containing JSON data would be accepted and the JSON data would be extracted.\n\nBut requests with content type `text/plain` are exempt from [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) preflights, for being considered [Simple requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests). So, the browser would execute them right away including cookies, and the text content could be a JSON string that would be parsed and accepted by the FastAPI application.\n\n### Patches\n\nThis is fixed in FastAPI `0.65.2`.\n\nThe request data is now parsed as JSON only if the `content-type` header is `application/json` or another JSON compatible media type like `application/geo+json`.\n\n### Workarounds\n\nIt's best to upgrade to the latest FastAPI.\n\nBut still, it would be possible to add a middleware or a dependency that checks the `content-type` header and aborts the request if it is not `application/json` or another JSON compatible content type.\n\n### References\n\n* [CORS on Mozilla web docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)\n* [This answer on StackExchange](https://security.stackexchange.com/questions/157528/ways-to-bypass-browsers-cors-policy/157531#157531)\n* [OWASP CSRF](https://owasp.org/www-community/attacks/csrf)\n* Fixed in PR [#2118](https://github.com/tiangolo/fastapi/pull/2118)\n\n### For more information\n\nIf you have any questions or comments, write to [security@tiangolo.com](mailto:security@tiangolo.com)","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2021-06-10T15:43:54.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":8.2,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N","references":["https://github.com/tiangolo/fastapi/security/advisories/GHSA-8h2j-cgx8-6xv7","https://nvd.nist.gov/vuln/detail/CVE-2021-32677","https://github.com/tiangolo/fastapi/commit/fa7e3c996edf2d5482fff8f9d890ac2390dede4d","https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/MATAWX25TYKNEKLDMKWNLYDB34UWTROA","https://github.com/pypa/advisory-database/tree/main/vulns/fastapi/PYSEC-2021-100.yaml","https://github.com/advisories/GHSA-8h2j-cgx8-6xv7"],"source_kind":"github","identifiers":["GHSA-8h2j-cgx8-6xv7","CVE-2021-32677"],"repository_url":"https://github.com/tiangolo/fastapi","blast_radius":38.04444258596105,"packages":[{"versions":[{"first_patched_version":"0.65.2","vulnerable_version_range":"\u003c 0.65.2"}],"ecosystem":"pypi","package_name":"fastapi"}],"created_at":"2022-12-21T16:12:59.719Z","updated_at":"2025-03-23T01:10:23.105Z","epss_percentage":0.00119,"epss_percentile":0.27913},{"uuid":"GSA_kwCzR0hTQS1xZjltLXZmZ2gtbTM4Oc4AA5EN","url":"https://github.com/advisories/GHSA-qf9m-vfgh-m389","title":"Duplicate Advisory: FastAPI Content-Type Header ReDoS","description":"## Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-2jv5-9r88-3w3p. This link is maintained to preserve external references.\n\n## Original Description\n\n### Summary\n\nWhen using form data, `python-multipart` uses a Regular Expression to parse the HTTP `Content-Type` header, including options.\n\nAn attacker could send a custom-made `Content-Type` option that is very difficult for the RegEx to process, consuming CPU resources and stalling indefinitely (minutes or more) while holding the main event loop. This means that process can't handle any more requests.\n\nThis can create a ReDoS (Regular expression Denial of Service): https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS\n\nThis only applies when the app uses form data, parsed with `python-multipart`.\n\n### Details\n\nA regular HTTP `Content-Type` header could look like:\n\n```\nContent-Type: text/html; charset=utf-8\n```\n\n`python-multipart` parses the option with this RegEx: https://github.com/andrew-d/python-multipart/blob/d3d16dae4b061c34fe9d3c9081d9800c49fc1f7a/multipart/multipart.py#L72-L74\n\nA custom option could be made and sent to the server to break it with:\n\n```\nContent-Type: application/x-www-form-urlencoded; !=\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n```\n\nThis is also reported to Starlette at: https://github.com/encode/starlette/security/advisories/GHSA-93gm-qmq6-w238\n\n### PoC\n\nCreate a FastAPI app that uses form data:\n\n```Python\n# main.py\nfrom typing import Annotated\nfrom fastapi.responses import HTMLResponse\nfrom fastapi import FastAPI,Form\nfrom pydantic import BaseModel\n\nclass Item(BaseModel):\n    username: str\n\napp = FastAPI()\n\n@app.get(\"/\", response_class=HTMLResponse)\nasync def index():\n    return HTMLResponse(\"Test\", status_code=200)\n\n@app.post(\"/submit/\")\nasync def submit(username: Annotated[str, Form()]):\n    return {\"username\": username}\n\n@app.post(\"/submit_json/\")\nasync def submit_json(item: Item):\n    return {\"username\": item.username}\n```\n\nThen start it with:\n\n```console\n$ uvicorn main:app\n\nINFO:     Started server process [50601]\nINFO:     Waiting for application startup.\nINFO:     ASGI 'lifespan' protocol appears unsupported.\nINFO:     Application startup complete.\nINFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)\n```\n\nThen send the attacking request with:\n\n```console\n$ curl -v -X 'POST' -H $'Content-Type: application/x-www-form-urlencoded; !=\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' --data-binary 'input=1' 'http://localhost:8000/submit/'\n```\n\n#### Stopping it\n\nBecause that holds the main loop consuming the CPU non-stop, it's not possible to simply kill Uvicorn with `Ctrl+C` as it can't handle the signal.\n\nTo stop it, first check the process ID running Uvicorn:\n\n```console\n$ ps -fA | grep uvicorn\n\n  501 59461 24785   0  4:28PM ttys004    0:00.13 /Users/user/code/starlette/env3.10/bin/python /Users/user/code/starlette/env3.10/bin/uvicorn redos_starlette:app\n  501 59466 99935   0  4:28PM ttys010    0:00.00 grep uvicorn\n```\n\nIn this case, the process ID was `59461`, then you can kill it (forcefully, with `-9`) with:\n\n```console\n$ kill -9 59461\n```\n\n### Impact\n\nIt's a ReDoS, (Regular expression Denial of Service), it only applies to those reading form data, using `python-multipart`. This way it also affects other libraries using Starlette, like FastAPI.\n\n### Original Report\n\nThis was originally reported to FastAPI as an email to security@tiangolo.com, sent via https://huntr.com/, the original reporter is Marcello, https://github.com/byt3bl33d3r\n\n\u003cdetails\u003e\n\u003csummary\u003eOriginal report to FastAPI\u003c/summary\u003e\n\nHey Tiangolo!\n\nMy name's Marcello and I work on the ProtectAI/Huntr Threat Research team, a few months ago we got a report (from @nicecatch2000) of a ReDoS affecting another very popular Python web framework. After some internal research, I found that FastAPI is vulnerable to the same ReDoS under certain conditions (only when it parses Form data not JSON).\n\nHere are the details: I'm using the latest version of FastAPI (0.109.0) and the following code:\n\n```Python\nfrom typing import Annotated\nfrom fastapi.responses import HTMLResponse\nfrom fastapi import FastAPI,Form\nfrom pydantic import BaseModel\n\nclass Item(BaseModel):\n    username: str\n\napp = FastAPI()\n\n@app.get(\"/\", response_class=HTMLResponse)\nasync def index():\n    return HTMLResponse(\"Test\", status_code=200)\n\n@app.post(\"/submit/\")\nasync def submit(username: Annotated[str, Form()]):\n    return {\"username\": username}\n\n@app.post(\"/submit_json/\")\nasync def submit_json(item: Item):\n    return {\"username\": item.username}\n```\n\nI'm running the above with uvicorn with the following command:\n\n```console\nuvicorn server:app\n```\n\nThen run the following cUrl command:\n\n```\ncurl -v -X 'POST' -H $'Content-Type: application/x-www-form-urlencoded; !=\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' --data-binary 'input=1' 'http://localhost:8000/submit/'\n```\n\nYou'll see the server locks up, is unable to serve anymore requests and one CPU core is pegged to 100%\n\nYou can even start uvicorn with multiple workers with the --workers 4 argument and as long as you send (workers + 1) requests you'll completely DoS the FastApi server.\n\nIf you try submitting Json to the /submit_json endpoint with the malicious Content-Type header you'll see it isn't vulnerable. So this only affects FastAPI when it parses Form data.\n\nCheers\n\n#### Impact\n\nAn attacker is able to cause a DoS on a FastApi server via a malicious Content-Type header if it parses Form data.\n\n#### Occurrences\n\n[params.py L586](https://github.com/tiangolo/fastapi/blob/d74b3b25659b42233a669f032529880de8bd6c2d/fastapi/params.py#L586)\n\n\u003c/details\u003e","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2024-02-05T17:01:54.000Z","withdrawn_at":"2024-02-16T23:37:39.000Z","classification":"GENERAL","cvss_score":7.5,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","references":["https://github.com/tiangolo/fastapi/security/advisories/GHSA-qf9m-vfgh-m389","https://nvd.nist.gov/vuln/detail/CVE-2024-24762","https://github.com/tiangolo/fastapi/commit/9d34ad0ee8a0dfbbcce06f76c2d5d851085024fc","https://github.com/tiangolo/fastapi/releases/tag/0.109.1","https://github.com/pypa/advisory-database/tree/main/vulns/fastapi/PYSEC-2024-38.yaml","https://github.com/Kludex/python-multipart/security/advisories/GHSA-2jv5-9r88-3w3p","https://github.com/encode/starlette/security/advisories/GHSA-93gm-qmq6-w238","https://github.com/Kludex/python-multipart/commit/20f0ef6b4e4caf7d69a667c54dff57fe467109a4","https://github.com/encode/starlette/commit/13e5c26a27f4903924624736abd6131b2da80cc5","https://github.com/andrew-d/python-multipart/blob/d3d16dae4b061c34fe9d3c9081d9800c49fc1f7a/multipart/multipart.py#L72-L74","https://github.com/advisories/GHSA-qf9m-vfgh-m389"],"source_kind":"github","identifiers":["GHSA-qf9m-vfgh-m389"],"repository_url":"https://github.com/tiangolo/fastapi","blast_radius":34.7967462676473,"packages":[{"versions":[{"first_patched_version":"0.109.1","vulnerable_version_range":"\u003c= 0.109.0"}],"ecosystem":"pypi","package_name":"fastapi"}],"created_at":"2024-02-05T18:05:01.779Z","updated_at":"2024-02-20T18:17:00.000Z","epss_percentage":null,"epss_percentile":null}],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/fastapi","docker_dependents_count":4819,"docker_downloads_count":184796512,"usage_url":"https://repos.ecosyste.ms/usage/pypi/fastapi","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/fastapi/dependencies","status":null,"funding_links":["https://github.com/sponsors/tiangolo"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastapi/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastapi/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastapi/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/fastapi/related_packages","maintainers":[{"uuid":"tiangolo","login":"tiangolo","name":null,"email":null,"url":null,"packages_count":29,"html_url":"https://pypi.org/user/tiangolo/","role":null,"created_at":"2022-11-27T16:08:48.150Z","updated_at":"2022-11-27T16:08:48.150Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/tiangolo/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":3077,"unique_repositories_count_past_30_days":279,"recent_issues":[{"uuid":"6014495101","node_id":"PR_kwDOS_JvSM8AAAABKdKv3w","number":147,"state":"open","title":"build(deps): bump fastapi from 0.143.1 to 0.157.0","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-24T15:23:20.000Z","updated_at":"2026-10-24T15:23:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"fastapi","old_version":"0.143.1","new_version":"0.157.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.1 to 0.157.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.157.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for combining query, header, and cookie parameter models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16573\"\u003e#16573\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📝 Clarify boolean query parameter parsing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16569\"\u003e#16569\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📝 Clarify nullable query parameters and path parameter defaults. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16568\"\u003e#16568\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Remove translation notifications and approval labeling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16570\"\u003e#16570\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.156.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve uploaded file positions when converting to \u003ccode\u003ebytes\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16566\"\u003e#16566\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.156.7\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error locations for form and file \u003ccode\u003eAliasChoices\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16564\"\u003e#16564\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.156.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Respect model alias settings for query, header, and cookie parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16562\"\u003e#16562\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.156.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for path parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16560\"\u003e#16560\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.156.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for named JSON body parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16559\"\u003e#16559\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🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e extraction for form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16557\"\u003e#16557\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.156.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for query parameters, headers, and cookies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16555\"\u003e#16555\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.156.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata in inferred request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16553\"\u003e#16553\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/386a28af2f87af1a32ac26d88f07b7f58ab2dfb1\"\u003e\u003ccode\u003e386a28a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.157.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16574\"\u003e#16574\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d6ccf110319e8a450308a84f63b379f95bed619a\"\u003e\u003ccode\u003ed6ccf11\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/578af61e04e045321e5ec04653a646375c86b34f\"\u003e\u003ccode\u003e578af61\u003c/code\u003e\u003c/a\u003e ✨ Add support for combining query, header, and cookie parameter models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16573\"\u003e#16573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e865cc74fb98376f7e024bda6a9c0a82fff30614\"\u003e\u003ccode\u003ee865cc7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8972a2d1638ef1ee800579938f57cc005393cab2\"\u003e\u003ccode\u003e8972a2d\u003c/code\u003e\u003c/a\u003e 👷 Remove translation notifications and approval labeling (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16570\"\u003e#16570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/624ec316850e3ff7252dd1bba76ef2eb9c5d2ab1\"\u003e\u003ccode\u003e624ec31\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f23cd4f095676af2d17681ab447fb014802dd869\"\u003e\u003ccode\u003ef23cd4f\u003c/code\u003e\u003c/a\u003e 📝 Clarify boolean query parameter parsing (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16569\"\u003e#16569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5c3e3d47abe649136a51f0cfc6353c5bdb5425e5\"\u003e\u003ccode\u003e5c3e3d4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f75181e4adc3946b3270c8ad453400e8e90fed5d\"\u003e\u003ccode\u003ef75181e\u003c/code\u003e\u003c/a\u003e 📝 Clarify nullable query parameters and path parameter defaults (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16568\"\u003e#16568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/de3e9af164bd2bf7a03be440baab4b4ded246cfc\"\u003e\u003ccode\u003ede3e9af\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16567\"\u003e#16567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.1...0.157.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=fastapi\u0026package-manager=uv\u0026previous-version=0.143.1\u0026new-version=0.157.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/gryphus-lab/swiss-tts-engine/pull/147","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gryphus-lab%2Fswiss-tts-engine/issues/147","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/147/packages"},{"uuid":"6011301605","node_id":"PR_kwDOTe-dks8AAAABKauPVg","number":167,"state":"open","title":"Bump fastapi from 0.115.6 to 0.156.8","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-24T09:04:00.000Z","updated_at":"2026-10-24T09:05:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.115.6","new_version":"0.156.8","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.6 to 0.156.8.\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.156.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve uploaded file positions when converting to \u003ccode\u003ebytes\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16566\"\u003e#16566\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.156.7\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error locations for form and file \u003ccode\u003eAliasChoices\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16564\"\u003e#16564\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.156.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Respect model alias settings for query, header, and cookie parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16562\"\u003e#16562\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.156.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for path parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16560\"\u003e#16560\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.156.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for named JSON body parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16559\"\u003e#16559\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🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e extraction for form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16557\"\u003e#16557\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.156.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for query parameters, headers, and cookies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16555\"\u003e#16555\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.156.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata in inferred request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16553\"\u003e#16553\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.156.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata when request options are omitted. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16549\"\u003e#16549\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.156.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic \u003ccode\u003eField()\u003c/code\u003e attributes in request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16547\"\u003e#16547\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.155.0\u003c/h2\u003e\n\u003cp\u003eThe deprecated \u003ccode\u003e**extra\u003c/code\u003e keyword arguments have been removed from \u003ccode\u003ePath\u003c/code\u003e, \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, \u003ccode\u003eBody\u003c/code\u003e, \u003ccode\u003eForm\u003c/code\u003e, and \u003ccode\u003eFile\u003c/code\u003e. Unknown keyword arguments now raise \u003ccode\u003eTypeError\u003c/code\u003e. For additional JSON Schema properties, replace, for example, \u003ccode\u003eQuery(custom=\u0026quot;value\u0026quot;)\u003c/code\u003e with \u003ccode\u003eQuery(json_schema_extra={\u0026quot;custom\u0026quot;: \u0026quot;value\u0026quot;})\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\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/de3e9af164bd2bf7a03be440baab4b4ded246cfc\"\u003e\u003ccode\u003ede3e9af\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16567\"\u003e#16567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2ddeff9647578c5f210a8cce2a0d310d1f88dfdb\"\u003e\u003ccode\u003e2ddeff9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b47e166dd56023e65812de7904416794b8fdfc8d\"\u003e\u003ccode\u003eb47e166\u003c/code\u003e\u003c/a\u003e 🐛 Preserve uploaded file positions when converting to \u003ccode\u003ebytes\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16566\"\u003e#16566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7417100c8a543ee926c3d2ee7b9c0fdbbc1fa045\"\u003e\u003ccode\u003e7417100\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.7 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16565\"\u003e#16565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5ef4bf6e1de0e541d8e6e663ad4a9d205926c662\"\u003e\u003ccode\u003e5ef4bf6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1282e9a9f1ac0647cb2031c6dd9c1d5631ade4d4\"\u003e\u003ccode\u003e1282e9a\u003c/code\u003e\u003c/a\u003e 🐛 Fix validation error locations for form and file \u003ccode\u003eAliasChoices\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16564\"\u003e#16564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b39c91cd1f221042313634db901c64615bb4fb5\"\u003e\u003ccode\u003e3b39c91\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16563\"\u003e#16563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0aa92bf26705cfd997c78c13eb045c2e1e615f7c\"\u003e\u003ccode\u003e0aa92bf\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd4d5705d573c8c59c37b46b313a1849229176fe\"\u003e\u003ccode\u003ebd4d570\u003c/code\u003e\u003c/a\u003e 🐛 Respect model alias settings for query, header, and cookie parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16562\"\u003e#16562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/43f46fb14feeee78f4077a55eb3f95f792b7cd9d\"\u003e\u003ccode\u003e43f46fb\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.5 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16561\"\u003e#16561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.6...0.156.8\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.115.6\u0026new-version=0.156.8)](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/diaoyunxi/https-smb-server/pull/167","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/diaoyunxi%2Fhttps-smb-server/issues/167","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/167/packages"},{"uuid":"6005314454","node_id":"PR_kwDOVIN4Ps8AAAABKWBRqw","number":129,"state":"open","title":"Bump fastapi from 0.142.4 to 0.156.2 in /harvey-worker","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":12,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-23T20:55:17.000Z","updated_at":"2026-10-23T20:59:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.142.4","new_version":"0.156.2","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/harvey-worker","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.142.4 to 0.156.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.156.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata in inferred request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16553\"\u003e#16553\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.156.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata when request options are omitted. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16549\"\u003e#16549\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.156.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic \u003ccode\u003eField()\u003c/code\u003e attributes in request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16547\"\u003e#16547\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.155.0\u003c/h2\u003e\n\u003cp\u003eThe deprecated \u003ccode\u003e**extra\u003c/code\u003e keyword arguments have been removed from \u003ccode\u003ePath\u003c/code\u003e, \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, \u003ccode\u003eBody\u003c/code\u003e, \u003ccode\u003eForm\u003c/code\u003e, and \u003ccode\u003eFile\u003c/code\u003e. Unknown keyword arguments now raise \u003ccode\u003eTypeError\u003c/code\u003e. For additional JSON Schema properties, replace, for example, \u003ccode\u003eQuery(custom=\u0026quot;value\u0026quot;)\u003c/code\u003e with \u003ccode\u003eQuery(json_schema_extra={\u0026quot;custom\u0026quot;: \u0026quot;value\u0026quot;})\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove deprecated \u003ccode\u003e**extra\u003c/code\u003e from request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16545\"\u003e#16545\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.154.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add Pydantic validation options to request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16542\"\u003e#16542\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.153.0\u003c/h2\u003e\n\u003cp\u003eUnions of form models now apply the same browser form handling as individual models. Empty scalar fields use defaults or produce missing-field errors, empty list items are preserved, omitted boolean fields become \u003ccode\u003eFalse\u003c/code\u003e, and unselected files are treated as missing. JSON request bodies are unchanged.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Apply browser form handling to unions of Pydantic models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16540\"\u003e#16540\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.152.0\u003c/h2\u003e\n\u003cp\u003eValidation errors for header parameter models now report the HTTP header name, such as \u003ccode\u003eint-val\u003c/code\u003e, instead of the Python field name, \u003ccode\u003eint_val\u003c/code\u003e. Explicit aliases, \u003ccode\u003eHeader(convert_underscores=False)\u003c/code\u003e, and Pydantic models with \u003ccode\u003eloc_by_alias=False\u003c/code\u003e keep their existing behavior.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix header model validation errors to report HTTP header names. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16538\"\u003e#16538\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.151.0\u003c/h2\u003e\n\u003cp\u003eJSON request bodies now distinguish an explicit \u003ccode\u003enull\u003c/code\u003e from an omitted value. For individual \u003ccode\u003eBody\u003c/code\u003e parameters, \u003ccode\u003enull\u003c/code\u003e is validated as \u003ccode\u003eNone\u003c/code\u003e: nullable types accept it, and non-nullable types reject it even when a default is defined. Defaults and default factories apply only when the value is omitted. This applies both to parameters inside JSON objects and to parameters representing the entire body. Clients that used \u003ccode\u003enull\u003c/code\u003e to request a default should omit the value instead.\u003c/p\u003e\n\u003cp\u003eWhen a JSON object is expected because of \u003ccode\u003eBody(embed=True)\u003c/code\u003e or multiple body parameters, sending \u003ccode\u003enull\u003c/code\u003e as the entire body now returns a validation error.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Distinguish JSON null from omitted body values. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16536\"\u003e#16536\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/44cc7420b798b70b406516f5f0abf039f99edbe3\"\u003e\u003ccode\u003e44cc742\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16554\"\u003e#16554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/952db907f0f0811572d4d1bfb9adc0e53a545b60\"\u003e\u003ccode\u003e952db90\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5a439d59b263a7d88b2b5c46a3e8e26862a4eb8\"\u003e\u003ccode\u003ef5a439d\u003c/code\u003e\u003c/a\u003e 🐛 Preserve Pydantic field metadata in inferred request parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16553\"\u003e#16553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6ce798fa2d51d0f477b99cf40fda6f97cff7a2e\"\u003e\u003ccode\u003ef6ce798\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16550\"\u003e#16550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2d144cbedb7448f4fd42d0e1e9b0887b7acdfc7b\"\u003e\u003ccode\u003e2d144cb\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0a8c3fae5495a2b4d62e5d83cb63d4087fb7e63e\"\u003e\u003ccode\u003e0a8c3fa\u003c/code\u003e\u003c/a\u003e 🐛 Preserve Pydantic field metadata when request options are omitted (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16549\"\u003e#16549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/51f1a6c10086bd39b1623581b5683b2165cfcf24\"\u003e\u003ccode\u003e51f1a6c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16548\"\u003e#16548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f054b4570e799605b8aa0c4340ae3c30dddb26e\"\u003e\u003ccode\u003e6f054b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f8cba1038d0c6ff2e56888830bc535f0c4e62d00\"\u003e\u003ccode\u003ef8cba10\u003c/code\u003e\u003c/a\u003e 🐛 Preserve Pydantic \u003ccode\u003eField()\u003c/code\u003e attributes in request parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16547\"\u003e#16547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d76f69b2f8d194c189b174cf9595db798ccbe4d1\"\u003e\u003ccode\u003ed76f69b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.155.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16546\"\u003e#16546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.142.4...0.156.2\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.142.4\u0026new-version=0.156.2)](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/maazxhasan-hue/Tradinglab03-/pull/129","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/maazxhasan-hue%2FTradinglab03-/issues/129","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/129/packages"},{"uuid":"6005154243","node_id":"PR_kwDORlvf988AAAABKV5CRw","number":2131,"state":"open","title":"deps(uv): bump the uv-minor-patch group with 7 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-23T20:42:52.000Z","updated_at":"2026-10-23T20:43:10.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(uv): bump","group_name":"uv-minor-patch","update_count":7,"packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fonttools","old_version":"4.66.1","new_version":"4.67.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"pymongo","old_version":"4.18.3","new_version":"4.19.0","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"gitpython","old_version":"3.2.0","new_version":"3.2.1","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"pluggy","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"ruff","old_version":"0.17.0","new_version":"0.17.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"distlib","old_version":"0.4.3","new_version":"0.4.4","repository_url":"https://github.com/pypa/distlib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-minor-patch group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.143.0` | `0.143.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.66.1` | `4.67.0` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.18.3` | `4.19.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.2.0` | `3.2.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.6.0` | `1.7.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.17.0` | `0.17.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.4.3` | `0.4.4` |\n\nUpdates `fastapi` from 0.143.0 to 0.143.3\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fonttools` from 4.66.1 to 4.67.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fonttools/fonttools/releases\"\u003efonttools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.67.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Support decreasing design-space axis mappings, via a new keyword-only \u003ccode\u003eallow_decreasing\u003c/code\u003e argument to \u003ccode\u003emodels.normalizeValue\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3970\"\u003e#3970\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4217\"\u003e#4217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4243\"\u003e#4243\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Allow partial DesignSpace v5 axis subsets: omitted range attributes on an \u003ccode\u003e\u0026lt;axis-subset\u0026gt;\u003c/code\u003e are taken from the parent axis, as the spec says (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4205\"\u003e#4205\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Fix \u003ccode\u003eDesignSpaceDocument.normalize()\u003c/code\u003e for mapped axes: axis bounds and rule conditions are now normalized from their original values (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4218\"\u003e#4218\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] \u003ccode\u003esplitInterpolable\u003c/code\u003e and \u003ccode\u003esplitVariableFonts\u003c/code\u003e now warn when a source or instance is dropped because it lies outside the document's own axes, instead of silently discarding it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4244\"\u003e#4244\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Add support for instancing variable COLRv1 fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2699\"\u003e#2699\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4279\"\u003e#4279\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Apply VVAR vertical-origin deltas to \u003ccode\u003eVORG\u003c/code\u003e, and use OpenType rounding for instanced advances and vertical origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4221\"\u003e#4221\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Keep a universal FeatureVariations record when pinning removes its last condition but other axes remain (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4247\"\u003e#4247\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Preserve ppem \u003ccode\u003eDevice\u003c/code\u003e corrections in GDEF, BASE, GPOS and JSTF instead of asserting on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4290\"\u003e#4290\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Allow requesting an axis's original range on VARC fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4280\"\u003e#4280\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer, subset] Fold, remove or remap MATH \u003ccode\u003eVariationIndex\u003c/code\u003e devices when instancing, subsetting the GDEF store or optimizing it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4288\"\u003e#4288\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Raise \u003ccode\u003eValueError: Missing required table fvar\u003c/code\u003e from \u003ccode\u003evarLib.mutator\u003c/code\u003e and the instancer CLI on a static font, instead of a bare \u003ccode\u003eKeyError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3751\"\u003e#3751\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4300\"\u003e#4300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[featureVars] When adding \u003ccode\u003ervrn\u003c/code\u003e, also shift lookup indices inside existing FeatureVariations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4233\"\u003e#4233\u003c/a\u003e). Handle null \u003ccode\u003eConditionSet\u003c/code\u003e and \u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e offsets when building, subsetting and instancing (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4234\"\u003e#4234\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4235\"\u003e#4235\u003c/a\u003e). Keep \u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e records sorted after merging new ones into an existing record (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4248\"\u003e#4248\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fix FeatureParams (\u003ccode\u003esize\u003c/code\u003e, \u003ccode\u003essXX\u003c/code\u003e, \u003ccode\u003ecvXX\u003c/code\u003e) in FeatureVariations alternate feature tables, which failed to compile and round-trip (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3623\"\u003e#3623\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4278\"\u003e#4278\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fully decode lazily loaded ligatures, \u003ccode\u003eSinglePos\u003c/code\u003e and \u003ccode\u003ePairPos\u003c/code\u003e arrays during recursive decompilation, so \u003ccode\u003ereorderGlyphs()\u003c/code\u003e on a lazy font no longer corrupts or asserts on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4231\"\u003e#4231\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4232\"\u003e#4232\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Update the variation-store binary format to follow \u003ca href=\"https://redirect.github.com/harfbuzz/boring-expansion-spec/issues/175\"\u003eharfbuzz/boring-expansion-spec#175\u003c/a\u003e: \u003ccode\u003eSparseVarRegionList.RegionCount\u003c/code\u003e is uint32, sparse axes use Offset32 and \u003ccode\u003eMultiVarData\u003c/code\u003e items are stored in an INDEX. VARC fonts built with earlier fontTools versions must be rebuilt (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4219\"\u003e#4219\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Several fixes: derive component conditions from \u003ccode\u003econditionIndex\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4237\"\u003e#4237\u003c/a\u003e), set the implicit \u003ccode\u003escaleY\u003c/code\u003e when importing XML (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4238\"\u003e#4238\u003c/a\u003e), report the font's current coordinates for components that reset unspecified axes (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4239\"\u003e#4239\u003c/a\u003e), and keep inherited coordinates when drawing CFF2 VARC components (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4236\"\u003e#4236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] \u003ccode\u003ebuildMultiVarData\u003c/code\u003e accepts flattened per-region vector tuples (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4245\"\u003e#4245\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[otConverters] Bounds-check CFF2 INDEX count and \u003ccode\u003eoffSize\u003c/code\u003e on read, raising \u003ccode\u003eTTLibError\u003c/code\u003e instead of allocating huge lazy lists (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4220\"\u003e#4220\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Handle empty packed deltas when \u003ccode\u003eOPTIMIZE_FONT_SPEED\u003c/code\u003e is set (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4241\"\u003e#4241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[scaleUpem] Scale per-glyph \u003ccode\u003eVORG\u003c/code\u003e origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4222\"\u003e#4222\u003c/a\u003e); fix VARC scaling for static fonts and condition variations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4223\"\u003e#4223\u003c/a\u003e); don't mutate the shared default CFF \u003ccode\u003eFontMatrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4251\"\u003e#4251\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4252\"\u003e#4252\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cmap] Fix format 2 compilation when all codes are single-byte (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/1524\"\u003e#1524\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4211\"\u003e#4211\u003c/a\u003e) or all single-byte codes map to \u003ccode\u003e.notdef\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4215\"\u003e#4215\u003c/a\u003e). Formats 2 and 4 now reject glyph IDs above 65535 instead of wrapping them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4226\"\u003e#4226\u003c/a\u003e). Split format 14 default UVS ranges longer than 256 codepoints (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4229\"\u003e#4229\u003c/a\u003e). Empty format 12 and 13 subtables round-trip (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4246\"\u003e#4246\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[glyf] Use unsigned instruction lengths, so programs of 32768-65535 bytes compile and decompile correctly (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4227\"\u003e#4227\u003c/a\u003e). Keep instructions in zero-contour glyphs (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4228\"\u003e#4228\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[pens] Fix cubic off-curve detection in \u003ccode\u003eTTGlyphPointPen\u003c/code\u003e across contour starts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4224\"\u003e#4224\u003c/a\u003e). \u003ccode\u003eGlyph.drawPoints()\u003c/code\u003e now raises \u003ccode\u003eNotImplementedError\u003c/code\u003e for an all-off-curve cubic contour, which the point pen protocol cannot express (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3191\"\u003e#3191\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4225\"\u003e#4225\u003c/a\u003e). \u003ccode\u003eRoundingPen\u003c/code\u003e passes the all-off-curve \u003ccode\u003eNone\u003c/code\u003e sentinel through (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4311\"\u003e#4311\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4312\"\u003e#4312\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[CFF2] Preserve operands when a blend has zero regions (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4240\"\u003e#4240\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cffLib] Read CFF font names as Latin-1, matching how they are written (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4253\"\u003e#4253\u003c/a\u003e). Deleting a CFF dict attribute now actually removes it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2725\"\u003e#2725\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4264\"\u003e#4264\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[CFF2ToCFF] Fix conversion of fonts with local subroutines (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4258\"\u003e#4258\u003c/a\u003e). A CFF2 table with a single FontDict is now converted to a name-keyed CFF font that keeps its glyph names (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3890\"\u003e#3890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4265\"\u003e#4265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Handle a null GDEF variation store (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4230\"\u003e#4230\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[merge] Support merging fonts that both have a MATH table (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3823\"\u003e#3823\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4257\"\u003e#4257\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Reject the same mark class used twice in one anchor list (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3628\"\u003e#3628\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4255\"\u003e#4255\u003c/a\u003e). Don't crash on value records whose devices are all NULL (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2396\"\u003e#2396\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4261\"\u003e#4261\u003c/a\u003e). Pad a short OS/2 \u003ccode\u003eVendor\u003c/code\u003e with spaces (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4259\"\u003e#4259\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Raise \u003ccode\u003eFeatureLibError\u003c/code\u003e with a location, instead of a bare Python error, for: a BASE script list without a matching tag list (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4263\"\u003e#4263\u003c/a\u003e), a \u003ccode\u003eUnicodeRange\u003c/code\u003e bit outside 0-127 (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4266\"\u003e#4266\u003c/a\u003e), a name string that cannot be decoded (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4267\"\u003e#4267\u003c/a\u003e), a STAT axis \u003ccode\u003elocation\u003c/code\u003e with no or too many values (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4268\"\u003e#4268\u003c/a\u003e), and a non-ASCII OS/2 \u003ccode\u003eVendor\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4269\"\u003e#4269\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[name] Fix the BCP 47 tags of some Mac and Windows language IDs, e.g. \u003ccode\u003ees\u003c/code\u003e was mapped to Mac Estonian (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3733\"\u003e#3733\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4256\"\u003e#4256\u003c/a\u003e). \u003ccode\u003egetDebugName\u003c/code\u003e prefers the Windows English name over the Mac one (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3969\"\u003e#3969\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4273\"\u003e#4273\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[post] Don't crash on a format 2.0 table with \u003ccode\u003enumGlyphs\u003c/code\u003e set to 0 (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3060\"\u003e#3060\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4274\"\u003e#4274\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VDMX] Recompute \u003ccode\u003enumRecs\u003c/code\u003e and \u003ccode\u003enumRatios\u003c/code\u003e when compiling (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4293\"\u003e#4293\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Silf] Fix compiling a \u003ccode\u003eSilf\u003c/code\u003e table that was decompiled from binary (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4294\"\u003e#4294\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[woff2] Preserve \u003ccode\u003eminorVersion\u003c/code\u003e when copying flavor data (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4249\"\u003e#4249\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4250\"\u003e#4250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttGlyphSet] Compute glyph width lazily for glyf variable fonts without HVAR, so \u003ccode\u003e.width\u003c/code\u003e is correct before drawing (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3964\"\u003e#3964\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4260\"\u003e#4260\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.interpolatable] Respect designspace source layers (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3951\"\u003e#3951\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4275\"\u003e#4275\u003c/a\u003e); fix \u003ccode\u003e--json\u003c/code\u003e output with SciPy (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3870\"\u003e#3870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4276\"\u003e#4276\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.psLib] Fix tokenizing of escaped parentheses in PostScript strings (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4207\"\u003e#4207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[svgLib] Raise \u003ccode\u003eValueError\u003c/code\u003e instead of \u003ccode\u003eIndexError\u003c/code\u003e on a truncated path command (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4254\"\u003e#4254\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.transform] Preserve the direction of the remaining axis when decomposing a transform whose first column is zero (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4242\"\u003e#4242\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.textTools] \u003ccode\u003eTag.__ne__\u003c/code\u003e returns \u003ccode\u003eNotImplemented\u003c/code\u003e for unsupported types (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4305\"\u003e#4305\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4306\"\u003e#4306\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.dictTools] \u003ccode\u003ehashdict\u003c/code\u003e rejects in-place union (\u003ccode\u003e|=\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4313\"\u003e#4313\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4314\"\u003e#4314\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.xmlReader] Close owned input streams when parsing fails (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4298\"\u003e#4298\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.filesystem] \u003ccode\u003eWriteZipFS.close()\u003c/code\u003e can be called more than once (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4309\"\u003e#4309\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4310\"\u003e#4310\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[EBDT] Keep EBDT/CBDT glyph metrics after probing a missing attribute (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3806\"\u003e#3806\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4216\"\u003e#4216\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/fonttools/fonttools/blob/main/NEWS.rst\"\u003efonttools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.67.0 (released 2026-10-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Support decreasing design-space axis mappings, via a new keyword-only\n\u003ccode\u003eallow_decreasing\u003c/code\u003e argument to \u003ccode\u003emodels.normalizeValue\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3970\"\u003e#3970\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4217\"\u003e#4217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4243\"\u003e#4243\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Allow partial DesignSpace v5 axis subsets: omitted range attributes\non an \u003ccode\u003e\u0026lt;axis-subset\u0026gt;\u003c/code\u003e are taken from the parent axis, as the spec says (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4205\"\u003e#4205\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Fix \u003ccode\u003eDesignSpaceDocument.normalize()\u003c/code\u003e for mapped axes: axis\nbounds and rule conditions are now normalized from their original values (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4218\"\u003e#4218\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] \u003ccode\u003esplitInterpolable\u003c/code\u003e and \u003ccode\u003esplitVariableFonts\u003c/code\u003e now warn when a\nsource or instance is dropped because it lies outside the document's own axes,\ninstead of silently discarding it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4244\"\u003e#4244\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Add support for instancing variable COLRv1 fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2699\"\u003e#2699\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4279\"\u003e#4279\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Apply VVAR vertical-origin deltas to \u003ccode\u003eVORG\u003c/code\u003e, and use OpenType\nrounding for instanced advances and vertical origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4221\"\u003e#4221\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Keep a universal FeatureVariations record when pinning removes\nits last condition but other axes remain (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4247\"\u003e#4247\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Preserve ppem \u003ccode\u003eDevice\u003c/code\u003e corrections in GDEF, BASE, GPOS and JSTF\ninstead of asserting on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4290\"\u003e#4290\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Allow requesting an axis's original range on VARC fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4280\"\u003e#4280\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer, subset] Fold, remove or remap MATH \u003ccode\u003eVariationIndex\u003c/code\u003e devices\nwhen instancing, subsetting the GDEF store or optimizing it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4288\"\u003e#4288\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Raise \u003ccode\u003eValueError: Missing required table fvar\u003c/code\u003e from \u003ccode\u003evarLib.mutator\u003c/code\u003e\nand the instancer CLI on a static font, instead of a bare \u003ccode\u003eKeyError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3751\"\u003e#3751\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4300\"\u003e#4300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[featureVars] When adding \u003ccode\u003ervrn\u003c/code\u003e, also shift lookup indices inside existing\nFeatureVariations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4233\"\u003e#4233\u003c/a\u003e). Handle null \u003ccode\u003eConditionSet\u003c/code\u003e and\n\u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e offsets when building, subsetting and instancing\n(\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4234\"\u003e#4234\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4235\"\u003e#4235\u003c/a\u003e). Keep \u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e records sorted after merging new\nones into an existing record (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4248\"\u003e#4248\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fix FeatureParams (\u003ccode\u003esize\u003c/code\u003e, \u003ccode\u003essXX\u003c/code\u003e, \u003ccode\u003ecvXX\u003c/code\u003e) in FeatureVariations\nalternate feature tables, which failed to compile and round-trip (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3623\"\u003e#3623\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4278\"\u003e#4278\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fully decode lazily loaded ligatures, \u003ccode\u003eSinglePos\u003c/code\u003e and \u003ccode\u003ePairPos\u003c/code\u003e arrays\nduring recursive decompilation, so \u003ccode\u003ereorderGlyphs()\u003c/code\u003e on a lazy font no longer\ncorrupts or asserts on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4231\"\u003e#4231\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4232\"\u003e#4232\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Update the variation-store binary format to follow\n\u003ca href=\"https://redirect.github.com/harfbuzz/boring-expansion-spec/issues/175\"\u003eharfbuzz/boring-expansion-spec#175\u003c/a\u003e: \u003ccode\u003eSparseVarRegionList.RegionCount\u003c/code\u003e is uint32,\nsparse axes use Offset32 and \u003ccode\u003eMultiVarData\u003c/code\u003e items are stored in an INDEX. VARC\nfonts built with earlier fontTools versions must be rebuilt (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4219\"\u003e#4219\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Several fixes: derive component conditions from \u003ccode\u003econditionIndex\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4237\"\u003e#4237\u003c/a\u003e),\nset the implicit \u003ccode\u003escaleY\u003c/code\u003e when importing XML (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4238\"\u003e#4238\u003c/a\u003e), report the font's current\ncoordinates for components that reset unspecified axes (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4239\"\u003e#4239\u003c/a\u003e), and keep inherited\ncoordinates when drawing CFF2 VARC components (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4236\"\u003e#4236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] \u003ccode\u003ebuildMultiVarData\u003c/code\u003e accepts flattened per-region vector tuples (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4245\"\u003e#4245\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[otConverters] Bounds-check CFF2 INDEX count and \u003ccode\u003eoffSize\u003c/code\u003e on read, raising\n\u003ccode\u003eTTLibError\u003c/code\u003e instead of allocating huge lazy lists (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4220\"\u003e#4220\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Handle empty packed deltas when \u003ccode\u003eOPTIMIZE_FONT_SPEED\u003c/code\u003e is set (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4241\"\u003e#4241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[scaleUpem] Scale per-glyph \u003ccode\u003eVORG\u003c/code\u003e origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4222\"\u003e#4222\u003c/a\u003e); fix VARC scaling for static\nfonts and condition variations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4223\"\u003e#4223\u003c/a\u003e); don't mutate the shared default CFF\n\u003ccode\u003eFontMatrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4251\"\u003e#4251\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4252\"\u003e#4252\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cmap] Fix format 2 compilation when all codes are single-byte (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/1524\"\u003e#1524\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4211\"\u003e#4211\u003c/a\u003e) or\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/fonttools/fonttools/commit/16f88cb09446ab617a1a788e48ae12e0f0ec5217\"\u003e\u003ccode\u003e16f88cb\u003c/code\u003e\u003c/a\u003e Release 4.67.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/5049c83959de649b5cda2a4b7d1da3cc3436079b\"\u003e\u003ccode\u003e5049c83\u003c/code\u003e\u003c/a\u003e Update NEWS.rst [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/fdfd15f959c2a263163e13db917b58c9e4844548\"\u003e\u003ccode\u003efdfd15f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4314\"\u003e#4314\u003c/a\u003e from xiehuanyi/fix/hashdict-inplace-union-20261014\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/87ee7d321f456039fe7ae7d9b9a87b164c051e21\"\u003e\u003ccode\u003e87ee7d3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4312\"\u003e#4312\u003c/a\u003e from xiehuanyi/fix/roundingpen-offcurve-none-20261014\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/e6e65d3748f8af2a9e3685c0cae915d9f20112c4\"\u003e\u003ccode\u003ee6e65d3\u003c/code\u003e\u003c/a\u003e [dictTools] Reject in-place union on hashdict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/10cfefe61a82824662296f447bec1f8503a313d6\"\u003e\u003ccode\u003e10cfefe\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4310\"\u003e#4310\u003c/a\u003e from xiehuanyi/fix/writezipfs-idempotent-close-20261014\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/06157e4d91539f7bac16aaa306fc53ca61b9792b\"\u003e\u003ccode\u003e06157e4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4300\"\u003e#4300\u003c/a\u003e from CAOShurong/codex/3751-missing-fvar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/2940a2e5260489a7fd9045cf2cfc329b1db151d3\"\u003e\u003ccode\u003e2940a2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4298\"\u003e#4298\u003c/a\u003e from xiehuanyi/fix-xml-reader-failure-cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/821805d066d548b32334841fcc0de5f5c8b24b5b\"\u003e\u003ccode\u003e821805d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4306\"\u003e#4306\u003c/a\u003e from xiehuanyi/fix/tag-notimplemented-comparison-202...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/85538d641a2babe23e31b37b2aa32d0a271ec2b0\"\u003e\u003ccode\u003e85538d6\u003c/code\u003e\u003c/a\u003e [roundingPen] Preserve all-off-curve quadratic sentinel\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fonttools/fonttools/compare/4.66.1...4.67.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymongo` from 4.18.3 to 4.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mongodb/mongo-python-driver/releases\"\u003epymongo's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMongo 4.19.0\u003c/h2\u003e\n\u003cp\u003eRelease notes: \u003ca href=\"https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004\u0026amp;version=52147\"\u003ehttps://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004\u0026amp;version=52147\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/mongodb/mongo-python-driver/blob/main/doc/changelog.rst\"\u003epymongo's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChanges in Version 4.19.0 (2026/10/14)\u003c/h2\u003e\n\u003cp\u003ePyMongo 4.19 brings a number of changes including:\u003c/p\u003e\n\u003cp\u003e.. warning:: PyMongo 4.19 drops support for Python 3.9 and 3.10 and removes\nPyPy support: Python 3.11+ is now required.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9 and 3.10.\u003c/li\u003e\n\u003cli\u003eRemoved support for PyPy.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eAlgorithm.RANGEPREVIEW\u003c/code\u003e and\n\u003ccode\u003eQueryType.RANGEPREVIEW\u003c/code\u003e members (\u003ccode\u003ePYTHON-6009\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003eAdded support for running the synchronous and asynchronous clients in\nsubinterpreters, including inside\n\u003ccode\u003econcurrent.futures.InterpreterPoolExecutor\u003c/code\u003e (Python 3.14+). Only in\nsubinterpreters, which do not allow daemon threads, the synchronous\nclient's monitor threads now start as non-daemon threads and are stopped\nand joined when the interpreter is torn down. Monitor threads in the main\ninterpreter remain daemon threads and shutdown behavior is unchanged.\nNote that because these threads are non-daemon, a subinterpreter may block\non teardown until any in-flight monitor work completes.\u003c/li\u003e\n\u003cli\u003eAdded support for routing Key Management Service (KMS) requests for\nClient-Side Field Level Encryption and Queryable Encryption through an HTTP\nproxy, using the new \u003ccode\u003ekms_connect_callback\u003c/code\u003e option on\n:class:\u003ccode\u003e~pymongo.encryption_options.AutoEncryptionOpts\u003c/code\u003e,\n:class:\u003ccode\u003e~pymongo.encryption.ClientEncryption\u003c/code\u003e, and\n:class:\u003ccode\u003e~pymongo.asynchronous.encryption.AsyncClientEncryption\u003c/code\u003e. The callback\nopens the connection and the driver performs the KMS TLS handshake over it, so\nverification still targets the KMS host rather than the proxy. For an ordinary\nHTTP proxy, pass :class:\u003ccode\u003e~pymongo.encryption_options.HTTPProxyKMSConnect\u003c/code\u003e or\n:class:\u003ccode\u003e~pymongo.encryption_options.AsyncHTTPProxyKMSConnect\u003c/code\u003e instead of\nwriting a callback. Both helpers accept custom \u003ccode\u003eCONNECT\u003c/code\u003e headers, e.g.\n\u003ccode\u003eProxy-Authorization\u003c/code\u003e for proxies that require authentication.\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003esrv_host_validator\u003c/code\u003e keyword argument to\n:class:\u003ccode\u003e~pymongo.synchronous.mongo_client.MongoClient\u003c/code\u003e and\n:class:\u003ccode\u003e~pymongo.asynchronous.mongo_client.AsyncMongoClient\u003c/code\u003e, an alternative to\n\u003ccode\u003esrvAllowedHostsSuffix\u003c/code\u003e for deployments whose acceptable SRV hosts cannot be\nexpressed as a single suffix. The callback is invoked once per SRV-returned\nhost and must return a boolean: \u003ccode\u003eTrue\u003c/code\u003e to accept the host and \u003ccode\u003eFalse\u003c/code\u003e to\nreject it. During initial DNS discovery a non-boolean return raises an error;\nduring SRV polling it is treated as a rejection. It is mutually exclusive with\n\u003ccode\u003esrvAllowedHostsSuffix\u003c/code\u003e and, because it takes a callable, cannot be set in a\nconnection string. See the\n:class:\u003ccode\u003e~pymongo.synchronous.mongo_client.MongoClient\u003c/code\u003e and\n:class:\u003ccode\u003e~pymongo.asynchronous.mongo_client.AsyncMongoClient\u003c/code\u003e documentation for\nsecurity considerations.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrvAllowedHostsSuffix\u003c/code\u003e may now be set to a single label reserved for\nprivate or special use, such as \u003ccode\u003elocalhost\u003c/code\u003e, \u003ccode\u003etest\u003c/code\u003e, or \u003ccode\u003einternal\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/mongodb/mongo-python-driver/commit/a58b4f4f5ac6d21d071593c0f24b2e94a1cf6786\"\u003e\u003ccode\u003ea58b4f4\u003c/code\u003e\u003c/a\u003e Prep 4.19 Release (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3122\"\u003e#3122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/3242611c4f22224b7da49573fedc64b3a25679e8\"\u003e\u003ccode\u003e3242611\u003c/code\u003e\u003c/a\u003e PYTHON-6147 Add CSFLE HTTP proxy KMS connect helpers (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/b5a7f2606a45681c1044b5f96b438f3c822af845\"\u003e\u003ccode\u003eb5a7f26\u003c/code\u003e\u003c/a\u003e PYTHON-6009 Remove deprecated Algorithm.RANGEPREVIEW and QueryType.RANGEPREVI...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/f3f19df764379daee90d5be947a3bc926c47f525\"\u003e\u003ccode\u003ef3f19df\u003c/code\u003e\u003c/a\u003e PYTHON-6170 [BF] AWS ECS test container cannot install uv (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/a740cdf79cc5e71ee465ea06c7cfd479946387d1\"\u003e\u003ccode\u003ea740cdf\u003c/code\u003e\u003c/a\u003e PYTHON-6063 Remove PyPy support (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/ed744013a283aab8a38b9726d13a894e1be5e5c0\"\u003e\u003ccode\u003eed74401\u003c/code\u003e\u003c/a\u003e PYTHON-6138 followup -- Drop Python 3.9 and 3.10 Support (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3118\"\u003e#3118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/e0b11bf246f9668ae2ed9be7703ebb8b4d862b7e\"\u003e\u003ccode\u003ee0b11bf\u003c/code\u003e\u003c/a\u003e PYTHON-6163 Pure-Python decode_all silently accepts 1-byte invalid BSON (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/b5a36ccbdb97298fbf9b5b5767affe92c534461f\"\u003e\u003ccode\u003eb5a36cc\u003c/code\u003e\u003c/a\u003e PYTHON-6111 C extension accepts BSON documents where element data overlaps th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/1f64ecdd5195b24c8282495cef05becd522d1dfa\"\u003e\u003ccode\u003e1f64ecd\u003c/code\u003e\u003c/a\u003e PYTHON-6158 Clean up version-gated code paths (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3112\"\u003e#3112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/0cc64d6decc17b1c7bdbcfedee5b09983ce24b69\"\u003e\u003ccode\u003e0cc64d6\u003c/code\u003e\u003c/a\u003e PYTHON-6161 Fix mod_wsgi CI: run apt-get update before install (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3115\"\u003e#3115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mongodb/mongo-python-driver/compare/4.18.3...4.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.2.0 to 3.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eprepare for next release, v3.2 by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2260\"\u003egitpython-developers/GitPython#2260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eobjects: decode a byte mode before reading its digits by \u003ca href=\"https://github.com/SashaMIT\"\u003e\u003ccode\u003e@​SashaMIT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2261\"\u003egitpython-developers/GitPython#2261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e from v0.16.5 to 0.16.9 in the pre-commit group 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/gitpython-developers/GitPython/pull/2263\"\u003egitpython-developers/GitPython#2263\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(submodule): validate destinations before mutation by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2264\"\u003egitpython-developers/GitPython#2264\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(util): create lock files in one exclusive step by \u003ca href=\"https://github.com/radhika1314\"\u003e\u003ccode\u003e@​radhika1314\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2267\"\u003egitpython-developers/GitPython#2267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(commit): accumulate gpgsig continuation lines in linear time by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2268\"\u003egitpython-developers/GitPython#2268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(index): accept a single PathLike in checkout by \u003ca href=\"https://github.com/kokotatan\"\u003e\u003ccode\u003e@​kokotatan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2269\"\u003egitpython-developers/GitPython#2269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(util): redact URL credentials without corrupting the host by \u003ca href=\"https://github.com/yunaremaia\"\u003e\u003ccode\u003e@​yunaremaia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2270\"\u003egitpython-developers/GitPython#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange line for changelogs by \u003ca href=\"https://github.com/CrowZhen\"\u003e\u003ccode\u003e@​CrowZhen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2272\"\u003egitpython-developers/GitPython#2272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(commit): reject identity fields that alter commit headers by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2271\"\u003egitpython-developers/GitPython#2271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: stop stalled remote commands when their timeout expires by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2277\"\u003egitpython-developers/GitPython#2277\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(util): reject symbolic links that alias \u003ccode\u003e.gitmodules\u003c/code\u003e by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2278\"\u003egitpython-developers/GitPython#2278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: send one object name or path per git stdin record by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2279\"\u003egitpython-developers/GitPython#2279\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(stats): preserve whitespace in filenames by \u003ca href=\"https://github.com/v1shay\"\u003e\u003ccode\u003e@​v1shay\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2280\"\u003egitpython-developers/GitPython#2280\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(config): preserve exact large integer values by \u003ca href=\"https://github.com/xiehuanyi\"\u003e\u003ccode\u003e@​xiehuanyi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2281\"\u003egitpython-developers/GitPython#2281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve IterableList names independently of list attributes by \u003ca href=\"https://github.com/FanWu-ai\"\u003e\u003ccode\u003e@​FanWu-ai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2283\"\u003egitpython-developers/GitPython#2283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix relative blocking lock 20261011 by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2284\"\u003egitpython-developers/GitPython#2284\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/SashaMIT\"\u003e\u003ccode\u003e@​SashaMIT\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2261\"\u003egitpython-developers/GitPython#2261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kokotatan\"\u003e\u003ccode\u003e@​kokotatan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2269\"\u003egitpython-developers/GitPython#2269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yunaremaia\"\u003e\u003ccode\u003e@​yunaremaia\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2270\"\u003egitpython-developers/GitPython#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CrowZhen\"\u003e\u003ccode\u003e@​CrowZhen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2272\"\u003egitpython-developers/GitPython#2272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/v1shay\"\u003e\u003ccode\u003e@​v1shay\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2280\"\u003egitpython-developers/GitPython#2280\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/xiehuanyi\"\u003e\u003ccode\u003e@​xiehuanyi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2281\"\u003egitpython-developers/GitPython#2281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FanWu-ai\"\u003e\u003ccode\u003e@​FanWu-ai\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2283\"\u003egitpython-developers/GitPython#2283\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.2.0...3.2.1\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.2.0...3.2.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/gitpython-developers/GitPython/blob/main/doc/source/changes.rst\"\u003egitpython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.2.1\u003c/h1\u003e\n\u003cp\u003eSecurity fixes for\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-83vg-56qc-22m7\"\u003ehttps://github.com/gitpython-developers/GitPython/security/advisories/GHSA-83vg-56qc-22m7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you can, also try and provide feedback on the upcoming v4 branch\n\u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2274\"\u003egitpython-developers/GitPython#2274\u003c/a\u003e - patches welcome.\u003c/p\u003e\n\u003cp\u003eSee the following for all changes.\n\u003ca href=\"https://github.com/gitpython-developers/GitPython/releases/tag/3.2.1\"\u003ehttps://github.com/gitpython-developers/GitPython/releases/tag/3.2.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/gitpython-developers/GitPython/commit/c179357b38a8962f1c8e33153ac58b5ac0e6e96a\"\u003e\u003ccode\u003ec179357\u003c/code\u003e\u003c/a\u003e prepare changelog prior to release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/97eadb888d2f99567e3113f4e455be4ca128f697\"\u003e\u003ccode\u003e97eadb8\u003c/code\u003e\u003c/a\u003e fix(submodule): validate destinations before mutation\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.2.0...3.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pluggy` from 1.6.0 to 1.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pluggy/blob/main/CHANGELOG.rst\"\u003epluggy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epluggy 1.7.0 (2026-10-14)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#632](https://github.com/pytest-dev/pluggy/issues/632) \u0026lt;https://github.com/pytest-dev/pluggy/issues/632\u0026gt;\u003c/code\u003e_: Hookspec methods defined without \u003ccode\u003eself\u003c/code\u003e as the first parameter now emit a :class:\u003ccode\u003eDeprecationWarning\u003c/code\u003e. Add \u003ccode\u003eself\u003c/code\u003e as the first parameter or use \u003ccode\u003e@staticmethod\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#170](https://github.com/pytest-dev/pluggy/issues/170) \u0026lt;https://github.com/pytest-dev/pluggy/issues/170\u0026gt;\u003c/code\u003e_: Hookspecs can now declare default values for arguments, using the usual \u003ccode\u003edef myhook(myarg=\u0026quot;default\u0026quot;)\u003c/code\u003e syntax.\nThis is mainly a backward compatibility feature, to allow a hookspec to add new parameters to an existing hook without breaking existing \u003cem\u003ecallers\u003c/em\u003e.\nSee :ref:\u003ccode\u003ehookspec_arg_default\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#729](https://github.com/pytest-dev/pluggy/issues/729) \u0026lt;https://github.com/pytest-dev/pluggy/issues/729\u0026gt;\u003c/code\u003e_: Tracing now adds detail where \u003ccode\u003estr()\u003c/code\u003e is ambiguous: empty strings and strings containing\nwhitespace are quoted, and enums and paths show their \u003ccode\u003erepr()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eA value spanning several lines is now displayed as a block instead of running into the\nsurrounding trace.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#629](https://github.com/pytest-dev/pluggy/issues/629) \u0026lt;https://github.com/pytest-dev/pluggy/issues/629\u0026gt;\u003c/code\u003e_: Fix hooks failing to register on Python 3.14+ when type annotations use forward references.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#315](https://github.com/pytest-dev/pluggy/issues/315) \u0026lt;https://github.com/pytest-dev/pluggy/issues/315\u0026gt;\u003c/code\u003e_: Source archives created by \u003ccode\u003egit archive\u003c/code\u003e (including GitHub's \u0026quot;Source code\u0026quot; downloads) now carry version information, so building pluggy from them no longer fails with a missing version.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#442](https://github.com/pytest-dev/pluggy/issues/442) \u0026lt;https://github.com/pytest-dev/pluggy/issues/442\u0026gt;\u003c/code\u003e_: With the addition of default values for hookspec arguments, we also changed the precedence of default values for \u003cem\u003ehookimpl\u003c/em\u003e arguments.\nPreviously, if a hookimpl function declared a default for an argument, it was always used, even if the \u003cem\u003ehook call\u003c/em\u003e passed an explicit value.\nNow the precedence is changed to: hook call passed value \u0026gt; hookspec default value \u0026gt; hookimpl default value.\nSee :ref:\u003ccode\u003ehookimpl_arg_defaults\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#701](https://github.com/pytest-dev/pluggy/issues/701) \u0026lt;https://github.com/pytest-dev/pluggy/issues/701\u0026gt;\u003c/code\u003e_: Hookimpls and hookspecs are now discovered via :func:\u003ccode\u003einspect.getattr_static\u003c/code\u003e, so\nproperties, \u003ccode\u003ecached_property\u003c/code\u003e and other descriptors are no longer executed while\nscanning a plugin. Hooks declared through such a descriptor are not supported.\u003c/p\u003e\n\u003cp\u003eAs a side effect, \u003ccode\u003e@hookimpl\u003c/code\u003e/\u003ccode\u003e@hookspec\u003c/code\u003e applied \u003cem\u003eabove\u003c/em\u003e \u003ccode\u003e@classmethod\u003c/code\u003e or\n\u003ccode\u003e@staticmethod\u003c/code\u003e is now picked up; previously the marker sat on the wrapper where\n\u003ccode\u003egetattr()\u003c/code\u003e never saw it. Callables stored directly on a plugin instance -- in its\n\u003ccode\u003e__dict__\u003c/code\u003e or in a \u003ccode\u003e__slots__\u003c/code\u003e slot -- keep being called exactly as \u003ccode\u003egetattr()\u003c/code\u003e\nreturned them, i.e. without an implicit \u003ccode\u003eself\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/pytest-dev/pluggy/commit/4c7f6365f2dde09c11e72db67d0f615231d64c19\"\u003e\u003ccode\u003e4c7f636\u003c/code\u003e\u003c/a\u003e Preparing release 1.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/21c7e1672941a0cd9e3c555bf5e5007f1fbe3dc5\"\u003e\u003ccode\u003e21c7e16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/787\"\u003e#787\u003c/a\u003e from pytest-dev/rm-outdated-doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/628959b178ab075c0b9af833511e53b4f5640fcb\"\u003e\u003ccode\u003e628959b\u003c/code\u003e\u003c/a\u003e docs: remove outdated hookimpl default args paragraph\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/2edab5eb6d1d68d628e68b1aa0796d2388733446\"\u003e\u003ccode\u003e2edab5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/752\"\u003e#752\u003c/a\u003e from bluetech/register-none-allow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/6995073de5ebc58d97dc017a7c2b7c5904f4c485\"\u003e\u003ccode\u003e6995073\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/776\"\u003e#776\u003c/a\u003e from RonnyPfannschmidt/fix/uv-lock-pytest-downgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/50c1ac94b4a3e64d2b8e1a1868d3c580c95c7164\"\u003e\u003ccode\u003e50c1ac9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/781\"\u003e#781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/6a7e84e48cbeacdcb231a1e6dffc0bd6b6bd085e\"\u003e\u003ccode\u003e6a7e84e\u003c/code\u003e\u003c/a\u003e Add changelog fragment for \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/776\"\u003e#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/d22cfb59c2a4c35af1335af338587d11a9a624ce\"\u003e\u003ccode\u003ed22cfb5\u003c/code\u003e\u003c/a\u003e Drop tox from the dev dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/74cbfa2b9a9ebf6098beb493ad1113efeb0e45e9\"\u003e\u003ccode\u003e74cbfa2\u003c/code\u003e\u003c/a\u003e Relock pytest and tox that dependabot downgraded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/87f130aa18d8fdf9c92585e72423eca7f3de727d\"\u003e\u003ccode\u003e87f130a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/755\"\u003e#755\u003c/a\u003e from harbinresearcher/codex/entrypoint-plugin-presence\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pluggy/compare/1.6.0...1.7.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.17.0 to 0.17.1\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.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-15.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Don't treat \u003ccode\u003eNone\u003c/code\u003e, \u003ccode\u003eTrue\u003c/code\u003e, or \u003ccode\u003eFalse\u003c/code\u003e as keywords (\u003ccode\u003eE271\u003c/code\u003e-\u003ccode\u003eE274\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29322\"\u003e#29322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix dedent with multiple leading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29382\"\u003e#29382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Detect legacy positional-only parameters in \u003ccode\u003e__new__\u003c/code\u003e methods (\u003ccode\u003ePYI063\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28502\"\u003e#28502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positives on quoted annotations (\u003ccode\u003ePYI036\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29274\"\u003e#29274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Avoid invalid comprehension suggestions (\u003ccode\u003ePERF401\u003c/code\u003e, \u003ccode\u003ePERF403\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29366\"\u003e#29366\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat more \u003ccode\u003ecollections\u003c/code\u003e and \u003ccode\u003eweakref\u003c/code\u003e containers as mutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29213\"\u003e#29213\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Update default and example \u003ccode\u003ealiases\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29333\"\u003e#29333\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fixfon\"\u003e\u003ccode\u003e@​fixfon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mmaxjr\"\u003e\u003ccode\u003e@​mmaxjr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joshuavetos\"\u003e\u003ccode\u003e@​joshuavetos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nekomario28\"\u003e\u003ccode\u003e@​nekomario28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shan3520\"\u003e\u003ccode\u003e@​shan3520\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.17.1\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.17.1\u003c/h2\u003e\n\u003cp\u003e|  File  | Platform | Checksum |\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/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.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-15.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Don't treat \u003ccode\u003eNone\u003c/code\u003e, \u003ccode\u003eTrue\u003c/code\u003e, or \u003ccode\u003eFalse\u003c/code\u003e as keywords (\u003ccode\u003eE271\u003c/code\u003e-\u003ccode\u003eE274\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29322\"\u003e#29322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix dedent with multiple leading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29382\"\u003e#29382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Detect legacy positional-only parameters in \u003ccode\u003e__new__\u003c/code\u003e methods (\u003ccode\u003ePYI063\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28502\"\u003e#28502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positives on quoted annotations (\u003ccode\u003ePYI036\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29274\"\u003e#29274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Avoid invalid comprehension suggestions (\u003ccode\u003ePERF401\u003c/code\u003e, \u003ccode\u003ePERF403\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29366\"\u003e#29366\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat more \u003ccode\u003ecollections\u003c/code\u003e and \u003ccode\u003eweakref\u003c/code\u003e containers as mutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29213\"\u003e#29213\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Update default and example \u003ccode\u003ealiases\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29333\"\u003e#29333\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fixfon\"\u003e\u003ccode\u003e@​fixfon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mmaxjr\"\u003e\u003ccode\u003e@​mmaxjr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joshuavetos\"\u003e\u003ccode\u003e@​joshuavetos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nekomario28\"\u003e\u003ccode\u003e@​nekomario28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shan3520\"\u003e\u003ccode\u003e@​shan3520\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/astral-sh/ruff/commit/4683270c69cbdaf6ad64d3f983fc458d5a43b41f\"\u003e\u003ccode\u003e4683270\u003c/code\u003e\u003c/a\u003e Bump version to 0.17.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29420\"\u003e#29420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3514027edb659bbc3c787d355be9d130e5587f15\"\u003e\u003ccode\u003e3514027\u003c/code\u003e\u003c/a\u003e [ty] Update typing conformance suite pin (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29417\"\u003e#29417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/829455624d78f2e89669e4b4b14af2b96abdb1ae\"\u003e\u003ccode\u003e8294556\u003c/code\u003e\u003c/a\u003e Update referenced PR security-review workflow (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29237\"\u003e#29237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d1e1b1f69b511df4385f64b510eeec4da01c1a0e\"\u003e\u003ccode\u003ed1e1b1f\u003c/code\u003e\u003c/a\u003e [ty] Preserve recursive aliases when rebuilding intersections (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29057\"\u003e#29057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/93526150df078af7dd8fc4226cdcc469539d2001\"\u003e\u003ccode\u003e9352615\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eperflint\u003c/code\u003e] Avoid invalid comprehension suggestions (\u003ccode\u003ePERF401\u003c/code\u003e, \u003ccode\u003ePERF403\u003c/code\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/83a3afc3156d73ae4296f3fa74ede28e4c72bfcd\"\u003e\u003ccode\u003e83a3afc\u003c/code\u003e\u003c/a\u003e Fix dedent with multiple leading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29382\"\u003e#29382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b42a8734410230f4529151782cae951b99bed858\"\u003e\u003ccode\u003eb42a873\u003c/code\u003e\u003c/a\u003e [ty] Clarify object attribute write-contract rationale (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29384\"\u003e#29384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d01678ebf594c97a7767d4372061c1f80ae5b5bb\"\u003e\u003ccode\u003ed01678e\u003c/code\u003e\u003c/a\u003e [ty] Clarify object attribute write-contract rationale (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29384\"\u003e#29384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/355b42a7719d8a555e3ee50c89848b42d8a11eb5\"\u003e\u003ccode\u003e355b42a\u003c/code\u003e\u003c/a\u003e [ty] Avoid writable override contracts from object (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29373\"\u003e#29373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e26e6d2a54ac2c5e1f5b1945042de3ff3885bf8e\"\u003e\u003ccode\u003ee26e6d2\u003c/code\u003e\u003c/a\u003e [ty] Collect intersection inference through constraint relations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28677\"\u003e#28677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.17.0...0.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.4.3 to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2026-10-16\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecompat\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a missing import. Thanks to Andrej730 for the patch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/273\"\u003e#273\u003c/a\u003e: Enforce compatible-release bounds in environment markers.\nThanks to Luochenchen for the patch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emetadata\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/194\"\u003e#194\u003c/a\u003e: Add an urls property to expose project and home URLs. Thanks to\nSinkleberg for the patch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRaise the correct exception when a launcher can't be written. Thanks to\ncandygoogy for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/144\"\u003e#144\u003c/a\u003e: Detect shell-script Python executables in ScriptMaker shebangs.\nThanks to Alex Chen for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance of export entry search to take linear time. Thanks to\nBrian Willows for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003etarfile.data_filter\u003c/code\u003e rather than \u003ccode\u003etarfile.tar_filter\u003c/code\u003e in \u003ccode\u003eunarchive()\u003c/code\u003e\nwhen extraction filters are available, matching the Python 3.14 default. Path and\nlink containment checks now use \u003ccode\u003eos.path.realpath\u003c/code\u003e and no longer fail with\n\u003ccode\u003eIndexError\u003c/code\u003e for members such as \u003ccode\u003e.\u003c/code\u003e or \u003ccode\u003e./\u003c/code\u003e. Thanks to Kobain for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eunarchive()\u003c/code\u003e now resolves member paths through symlinks seen earlier in the\nsame archive, so a chain of individually harmless-looking links cannot be used\nto write outside the destination on Pythons without extraction filters. Thanks to\nKobain for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eversion\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove NormalizedVersion by addressing correctness and performance gaps\nfound by comparison with packaging. Thanks to Damian Shaw for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove SemanticVersion by comparing numeric prerelease identifiers,\nincluding those longer than 8 digits. Thanks to Muneeb Sheikh for the\npatch.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\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/pypa/distlib/commit/25eed06966e45ef26c0c472106c67f9dc9cd4b4b\"\u003e\u003ccode\u003e25eed06\u003c/code\u003e\u003c/a\u003e Changes for 0.4.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/8ffee6f97c745afc8ec7fef4d0f2cb6c112b13c1\"\u003e\u003ccode\u003e8ffee6f\u003c/code\u003e\u003c/a\u003e Resolve member paths through earlier archive symlinks in unarchive()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/ef4a39075b5fd1cffa8aa29f91628f2b3171b524\"\u003e\u003ccode\u003eef4a390\u003c/code\u003e\u003c/a\u003e Test that data_filter rejects absolute symlinks with check=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/380b6a9a5f093eb48958e12255ea778fe9dfe3b6\"\u003e\u003ccode\u003e380b6a9\u003c/code\u003e\u003c/a\u003e Use data_filter and realpath containment checks in unarchive()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/7b7c572c2d5066807243d8096e947ba7fd3e155a\"\u003e\u003ccode\u003e7b7c572\u003c/code\u003e\u003c/a\u003e fix: enforce compatible-release bounds in markers (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/274\"\u003e#274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/38811ddffca3756110493bd911e70a17d0519762\"\u003e\u003ccode\u003e38811dd\u003c/code\u003e\u003c/a\u003e Detect shell-script Python executables in ScriptMaker shebangs (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/144\"\u003e#144\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/06ddb5d3bfc4deaa8ff46a938c00b5007baf9ade\"\u003e\u003ccode\u003e06ddb5d\u003c/code\u003e\u003c/a\u003e Compare numeric prerelease identifiers without a digit limit (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e54dd8c87b8cafafc2a09f334cdeb96d16e67760\"\u003e\u003ccode\u003ee54dd8c\u003c/code\u003e\u003c/a\u003e Raise the original error when a launcher can't be written (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c6270e3702ff500d95db3d61d99d65e2d46ac1dc\"\u003e\u003ccode\u003ec6270e3\u003c/code\u003e\u003c/a\u003e Fix NormalizedVersion gaps found by comparison with packaging (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/271\"\u003e#271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/5b3092bae41b2f6cd7540aba467d9e033022af78\"\u003e\u003ccode\u003e5b3092b\u003c/code\u003e\u003c/a\u003e Search export entries in linear time (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.4.3...0.4.4\"\u003ecompar...\n\n_Description has been truncated_","html_url":"https://github.com/DataBoar/data-boar/pull/2131","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataBoar%2Fdata-boar/issues/2131","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2131/packages"},{"uuid":"6000988847","node_id":"PR_kwDOVHtNHM8AAAABKSgqvw","number":342,"state":"closed","title":"build(deps): bump the pip-lock-minor-patch group in /docker/core-lock with 4 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-23T22:18:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-23T15:51:12.000Z","updated_at":"2026-10-23T22:18:58.000Z","time_to_close":23254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-lock-minor-patch","update_count":4,"packages":[{"name":"fastapi","old_version":"0.143.3","new_version":"0.154.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"setuptools","old_version":"84.0.0","new_version":"84.2.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"starlette","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"websockets","old_version":"17.2","new_version":"17.3","repository_url":"https://github.com/python-websockets/websockets"}],"path":"/docker/core-lock","ecosystem":"pip"},"body":"Bumps the pip-lock-minor-patch group in /docker/core-lock with 4 updates: [fastapi](https://github.com/fastapi/fastapi), [setuptools](https://github.com/pypa/setuptools), [starlette](https://github.com/Kludex/starlette) and [websockets](https://github.com/python-websockets/websockets).\n\nUpdates `fastapi` from 0.143.3 to 0.154.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.154.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add Pydantic validation options to request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16542\"\u003e#16542\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.153.0\u003c/h2\u003e\n\u003cp\u003eUnions of form models now apply the same browser form handling as individual models. Empty scalar fields use defaults or produce missing-field errors, empty list items are preserved, omitted boolean fields become \u003ccode\u003eFalse\u003c/code\u003e, and unselected files are treated as missing. JSON request bodies are unchanged.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Apply browser form handling to unions of Pydantic models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16540\"\u003e#16540\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.152.0\u003c/h2\u003e\n\u003cp\u003eValidation errors for header parameter models now report the HTTP header name, such as \u003ccode\u003eint-val\u003c/code\u003e, instead of the Python field name, \u003ccode\u003eint_val\u003c/code\u003e. Explicit aliases, \u003ccode\u003eHeader(convert_underscores=False)\u003c/code\u003e, and Pydantic models with \u003ccode\u003eloc_by_alias=False\u003c/code\u003e keep their existing behavior.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix header model validation errors to report HTTP header names. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16538\"\u003e#16538\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.151.0\u003c/h2\u003e\n\u003cp\u003eJSON request bodies now distinguish an explicit \u003ccode\u003enull\u003c/code\u003e from an omitted value. For individual \u003ccode\u003eBody\u003c/code\u003e parameters, \u003ccode\u003enull\u003c/code\u003e is validated as \u003ccode\u003eNone\u003c/code\u003e: nullable types accept it, and non-nullable types reject it even when a default is defined. Defaults and default factories apply only when the value is omitted. This applies both to parameters inside JSON objects and to parameters representing the entire body. Clients that used \u003ccode\u003enull\u003c/code\u003e to request a default should omit the value instead.\u003c/p\u003e\n\u003cp\u003eWhen a JSON object is expected because of \u003ccode\u003eBody(embed=True)\u003c/code\u003e or multiple body parameters, sending \u003ccode\u003enull\u003c/code\u003e as the entire body now returns a validation error.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Distinguish JSON null from omitted body values. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16536\"\u003e#16536\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.150.0\u003c/h2\u003e\n\u003cp\u003eWhen no file is selected, browsers submit a file part with an empty filename and empty content. FastAPI now treats this as missing: required file fields return a validation error, and fields with defaults or default factories use them. Unselected inputs are ignored in lists of files. Named zero-byte files are still accepted.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat unselected browser file inputs as missing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16534\"\u003e#16534\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.149.0\u003c/h2\u003e\n\u003cp\u003eBrowsers submit empty text inputs as empty strings (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e). FastAPI now treats empty scalar form values as missing in form models, matching individual \u003ccode\u003eForm\u003c/code\u003e parameters. Required fields return a validation error. Fields with defaults or default factories use them and remain unset in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eEmpty strings inside lists are preserved. Omitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e. JSON requests and direct Pydantic validation are unchanged.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat empty scalar values as missing in form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16529\"\u003e#16529\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.148.0\u003c/h2\u003e\n\u003cp\u003eDefaults for omitted \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, and \u003ccode\u003eForm\u003c/code\u003e parameters and model fields are no longer treated as user input. Defaults are not validated unless \u003ccode\u003evalidate_default=True\u003c/code\u003e is enabled. If you rely on validators running for omitted values, enable default validation with \u003ccode\u003eField(validate_default=True)\u003c/code\u003e for model fields or, for example, \u003ccode\u003eQuery(validate_default=True)\u003c/code\u003e for individual parameters. \u003ccode\u003eBody(validate_default=True)\u003c/code\u003e is now honored too.\u003c/p\u003e\n\u003cp\u003eFor parameter models, applying a default no longer marks a field as explicitly set, so \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e excludes it. Default factories run once, and validation errors no longer include injected defaults in \u003ccode\u003einput\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOmitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e and count as explicitly set.\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/fastapi/fastapi/commit/6f288521eb6bd52dfcdfd0b0fc3a1e0f05892331\"\u003e\u003ccode\u003e6f28852\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.154.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16544\"\u003e#16544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/14630ed1b5c5a11264358374ecbaa6f426e19bc3\"\u003e\u003ccode\u003e14630ed\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/597b5a7c82aafbca5510f42120dd033c91980630\"\u003e\u003ccode\u003e597b5a7\u003c/code\u003e\u003c/a\u003e ✨ Add Pydantic validation options to request parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16542\"\u003e#16542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8ee0e7e96baf68a02212199d0d64153945b701ba\"\u003e\u003ccode\u003e8ee0e7e\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.153.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16541\"\u003e#16541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e985e93c0868f0cf0e44cdf44132c2a0d7eb922b\"\u003e\u003ccode\u003ee985e93\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fef9257394e2d3037a38045d4f8f86f0259e6ffd\"\u003e\u003ccode\u003efef9257\u003c/code\u003e\u003c/a\u003e 🐛 Apply browser form handling to unions of Pydantic models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16540\"\u003e#16540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/993899cc2021daec7ba170c7ee9bcefd45e8db43\"\u003e\u003ccode\u003e993899c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.152.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16539\"\u003e#16539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b0cec3b3f53825d254c505cfa12c66f433f41d98\"\u003e\u003ccode\u003eb0cec3b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5ef18bfe8e9d098866ccb232f4290e42b9440ae7\"\u003e\u003ccode\u003e5ef18bf\u003c/code\u003e\u003c/a\u003e 🐛 Fix header model validation errors to report HTTP header names (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16538\"\u003e#16538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/051bdfe2da49eb2ee45c9a0d36e22c2b1c94ac4e\"\u003e\u003ccode\u003e051bdfe\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.151.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16537\"\u003e#16537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.3...0.154.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `setuptools` from 84.0.0 to 84.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev84.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for building abi3t extensions and abi3.abi3t wheels on Python\n3.15 and newer. See :pep:\u003ccode\u003e803\u003c/code\u003e and the \u003ccode\u003ePython 3.15 \u0026quot;What's New\u0026quot; entry \u0026lt;https://docs.python.org/3.15/whatsnew/3.15.html#pep-803-abi3t-stable-abi-for-free-threaded-builds\u0026gt;\u003c/code\u003e_\nfor more details. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5193\"\u003e#5193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated vendored packaging version to 26.3, which adds support for the\n\u003ccode\u003eabi3t\u003c/code\u003e tag from :pep:\u003ccode\u003e803\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5361\"\u003e#5361\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse target sysconfig data for stable-ABI extension filenames. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5351\"\u003e#5351\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev84.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools.archive_util\u003c/code\u003e now raises the new \u003ccode\u003eUnsafeMember\u003c/code\u003e exception when\nan archive member would be extracted outside of the extraction directory,\nwhere previously such a member was silently skipped. Aborting makes a\nmalicious or malformed archive visible to the caller instead of yielding a\nquietly incomplete extraction, and matches the behavior of the standard\nlibrary's \u003ccode\u003etarfile\u003c/code\u003e extraction filters.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eWheel.install_as_egg\u003c/code\u003e no longer creates namespace package directories\noutside of the destination egg directory. Entries in a wheel's\n\u003ccode\u003enamespace_packages.txt\u003c/code\u003e were split on \u003ccode\u003e.\u003c/code\u003e and passed straight to\n\u003ccode\u003eos.path.join\u003c/code\u003e, so an entry that was absolute, drive-qualified, or UNC\ndiscarded the destination and placed an \u003ccode\u003e__init__.py\u003c/code\u003e at a path chosen by\nthe wheel. Namespace entries are now validated as dotted module names on\nevery platform -- see GHSA-xmj3-9gf7-h52w.\u003c/p\u003e\n\u003cp\u003eThis code path is reached only by the deprecated \u003ccode\u003esetup_requires\u003c/code\u003e\nmechanism when \u003ccode\u003esetup()\u003c/code\u003e is invoked outside a PEP 517 frontend; the\nsetuptools build backend never reaches it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esetuptools.archive_util\u003c/code\u003e no longer extracts archive members outside of the\nrequested extraction directory. Both the tar and zip formats specify \u003ccode\u003e/\u003c/code\u003e as\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/pypa/setuptools/commit/301e27a484f17e175acf6b692fccc634f9a20c49\"\u003e\u003ccode\u003e301e27a\u003c/code\u003e\u003c/a\u003e Bump version: 84.1.0 → 84.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/39a7c2ecd80bb1c393b3867d9673027d490322cb\"\u003e\u003ccode\u003e39a7c2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5193\"\u003e#5193\u003c/a\u003e from ngoldbaum/abi3.abi3t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/7b5dea7c3372f0958f5cf689ba918f0ebcc5a698\"\u003e\u003ccode\u003e7b5dea7\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into abi3.abi3t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b3985b6d08f595de4bd123e86f83d1680c2e3e0b\"\u003e\u003ccode\u003eb3985b6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5352\"\u003e#5352\u003c/a\u003e from jameshilliard/fix/abi3-target-platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/0c3f3c44592ba8273ffd649d70d5a64220a3d1cc\"\u003e\u003ccode\u003e0c3f3c4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5361\"\u003e#5361\u003c/a\u003e from pypa/feature/vendor-packaging-26.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/77b7ace0aaf660beeb9b3f9da4aabf21cbcf3fa9\"\u003e\u003ccode\u003e77b7ace\u003c/code\u003e\u003c/a\u003e Bump version: 84.0.0 → 84.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/97b75e6e66b446f23886fe409ab19fc805ee42fb\"\u003e\u003ccode\u003e97b75e6\u003c/code\u003e\u003c/a\u003e Use target sysconfig for platform-qualified stable-ABI suffixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/4b0293987b195aa9f7a7222148fdba0d15d461f2\"\u003e\u003ccode\u003e4b02939\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/56bc40e36874fb22c4da66dc25c145ce9e9bbfcd\"\u003e\u003ccode\u003e56bc40e\u003c/code\u003e\u003c/a\u003e Update vendored packaging version to 26.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/e66004c64eaf6cf2f8c53ccdfac75cf7abce7ccf\"\u003e\u003ccode\u003ee66004c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5329\"\u003e#5329\u003c/a\u003e from pypa/fix/wheel-namespace-path-escape\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v84.0.0...v84.2.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.8.0 to 1.9.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.9.0\u003c/h2\u003e\n\u003cp\u003eThis release streams \u003ccode\u003eTestClient\u003c/code\u003e response bodies, so \u003ccode\u003eclient.stream()\u003c/code\u003e returns before the application finishes. It also escapes path delimiters when building URLs, matches host names case-insensitively, and keeps every existing \u003ccode\u003eVary\u003c/code\u003e header.\u003c/p\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStream \u003ccode\u003eTestClient\u003c/code\u003e response bodies, so \u003ccode\u003eclient.stream()\u003c/code\u003e returns before the application finishes. Closing an unfinished streamed response now cancels the application \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3491\"\u003e#3491\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePercent-encode \u003ccode\u003e?\u003c/code\u003e, \u003ccode\u003e#\u003c/code\u003e, \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in the request path when building \u003ccode\u003erequest.url\u003c/code\u003e, and \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in \u003ccode\u003eurl_path_for\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3671\"\u003e#3671\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUse the byte length for \u003ccode\u003eContent-Length\u003c/code\u003e when the response body is a typed or multidimensional \u003ccode\u003ememoryview\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3622\"\u003e#3622\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eHEAD\u003c/code\u003e in the \u003ccode\u003eAllow\u003c/code\u003e header of \u003ccode\u003eHTTPEndpoint\u003c/code\u003e 405 responses when \u003ccode\u003eGET\u003c/code\u003e is defined \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3585\"\u003e#3585\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eMatch host names case-insensitively in \u003ccode\u003eHost\u003c/code\u003e routing and \u003ccode\u003eTrustedHostMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3542\"\u003e#3542\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePreserve every existing \u003ccode\u003eVary\u003c/code\u003e header in \u003ccode\u003eMutableHeaders.add_vary_header()\u003c/code\u003e, used by \u003ccode\u003eGZipMiddleware\u003c/code\u003e and \u003ccode\u003eSessionMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3675\"\u003e#3675\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/starlette/compare/1.8.0...1.9.0\"\u003e1.8.0...1.9.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/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.0 (October 18, 2026)\u003c/h2\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eStream \u003ccode\u003eTestClient\u003c/code\u003e response bodies, so \u003ccode\u003eclient.stream()\u003c/code\u003e returns before the application finishes. Closing an unfinished streamed response now cancels the application \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3491\"\u003e#3491\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePercent-encode \u003ccode\u003e?\u003c/code\u003e, \u003ccode\u003e#\u003c/code\u003e, \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in the request path when building \u003ccode\u003erequest.url\u003c/code\u003e, and \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in \u003ccode\u003eurl_path_for\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3671\"\u003e#3671\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUse the byte length for \u003ccode\u003eContent-Length\u003c/code\u003e when the response body is a typed or multidimensional \u003ccode\u003ememoryview\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3622\"\u003e#3622\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eHEAD\u003c/code\u003e in the \u003ccode\u003eAllow\u003c/code\u003e header of \u003ccode\u003eHTTPEndpoint\u003c/code\u003e 405 responses when \u003ccode\u003eGET\u003c/code\u003e is defined \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3585\"\u003e#3585\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eMatch host names case-insensitively in \u003ccode\u003eHost\u003c/code\u003e routing and \u003ccode\u003eTrustedHostMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3542\"\u003e#3542\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePreserve every existing \u003ccode\u003eVary\u003c/code\u003e header in \u003ccode\u003eMutableHeaders.add_vary_header()\u003c/code\u003e, used by \u003ccode\u003eGZipMiddleware\u003c/code\u003e and \u003ccode\u003eSessionMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3675\"\u003e#3675\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/starlette/commit/1840c9dd3bda5bd0beb5a26b2a7bc797a0f91a2a\"\u003e\u003ccode\u003e1840c9d\u003c/code\u003e\u003c/a\u003e Version 1.9.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/750dc33efe2a3076fc6a69235b02a331c467bc09\"\u003e\u003ccode\u003e750dc33\u003c/code\u003e\u003c/a\u003e Preserve all \u003ccode\u003eVary\u003c/code\u003e headers in \u003ccode\u003eMutableHeaders.add_vary_header\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/414af4f6b95cbf1cbc43746dc84058a3394e989c\"\u003e\u003ccode\u003e414af4f\u003c/code\u003e\u003c/a\u003e Remove unmaintained packages from the third-party packages page (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/d4df01aab4d1a71c8b8db010843f6453efaaaf7c\"\u003e\u003ccode\u003ed4df01a\u003c/code\u003e\u003c/a\u003e Add adminsite to the third-party packages (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/1766228b4eb5462efd552f3364656e1e0a5b0180\"\u003e\u003ccode\u003e1766228\u003c/code\u003e\u003c/a\u003e Match host names case-insensitively in \u003ccode\u003eHost\u003c/code\u003e routing and `TrustedHostMiddlew...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/a579222b161e5407cd311c32648ed7c845bda4a4\"\u003e\u003ccode\u003ea579222\u003c/code\u003e\u003c/a\u003e Include \u003ccode\u003eHEAD\u003c/code\u003e in the \u003ccode\u003eAllow\u003c/code\u003e header of \u003ccode\u003eHTTPEndpoint\u003c/code\u003e 405 responses (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3585\"\u003e#3585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/6b11cd7df52dc80a5565ccde79d319729d84e92c\"\u003e\u003ccode\u003e6b11cd7\u003c/code\u003e\u003c/a\u003e Honor streaming responses in TestClient (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3491\"\u003e#3491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/b7901fb908f0c6c3b8b6e495517cea6b2e77e66b\"\u003e\u003ccode\u003eb7901fb\u003c/code\u003e\u003c/a\u003e Use byte length for typed \u003ccode\u003ememoryview\u003c/code\u003e response bodies (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/3214cd069e1b3c11628d172df387ded973934db2\"\u003e\u003ccode\u003e3214cd0\u003c/code\u003e\u003c/a\u003e Escape path delimiters and leading \u003ccode\u003e//\u003c/code\u003e when building URLs (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3671\"\u003e#3671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.8.0...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websockets` from 17.2 to 17.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-websockets/websockets/releases\"\u003ewebsockets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e17.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://websockets.readthedocs.io/en/stable/project/changelog.html\"\u003ehttps://websockets.readthedocs.io/en/stable/project/changelog.html\u003c/a\u003e for details.\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/python-websockets/websockets/commit/86a1ad5b0009e801e451f1be1da2a077e2dd2471\"\u003e\u003ccode\u003e86a1ad5\u003c/code\u003e\u003c/a\u003e Release version 17.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/5cc46ca2bedfb9183fc9c4523f79aeba620b9ab5\"\u003e\u003ccode\u003e5cc46ca\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 4.2.1 to 4.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/f6702a5b9bd6a95edd2cb8a5c3621f68fabe52d5\"\u003e\u003ccode\u003ef6702a5\u003c/code\u003e\u003c/a\u003e Deindent more test assertions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7fe5d60cf681e2f083b2b9f59c7094aa4fa88031\"\u003e\u003ccode\u003e7fe5d60\u003c/code\u003e\u003c/a\u003e Deindent assertions on raised exceptions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/8549c240e4c36a2a6002ef157abfe41bdc92c19e\"\u003e\u003ccode\u003e8549c24\u003c/code\u003e\u003c/a\u003e Support arbitrary data in basic auth credentials.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/a8a898b63e6a1fa89b49d9cae716b998480887bb\"\u003e\u003ccode\u003ea8a898b\u003c/code\u003e\u003c/a\u003e Support UTF-8 passwords in server basic auth.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/bc17da4841b32dafdc036c0a35f7ccd2fc5d9b23\"\u003e\u003ccode\u003ebc17da4\u003c/code\u003e\u003c/a\u003e Parse integers strictly in the HTTP protocol.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7f567174457f2620c274f11737b1b0129ec6e9b0\"\u003e\u003ccode\u003e7f56717\u003c/code\u003e\u003c/a\u003e Increase timeout for running tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/47e292698aa58ad35877a4ddf07cd9eacef35e38\"\u003e\u003ccode\u003e47e2926\u003c/code\u003e\u003c/a\u003e Simplify issue template and fix typo.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/77875e189abc69c1c8e2beae0bd0d6bd799cc505\"\u003e\u003ccode\u003e77875e1\u003c/code\u003e\u003c/a\u003e Fix intermittent errors on free-threaded Python.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-websockets/websockets/compare/17.2...17.3\"\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/noomesh/noomesh/pull/342","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/noomesh%2Fnoomesh/issues/342","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/342/packages"},{"uuid":"5993439340","node_id":"PR_kwDOOBrOOM8AAAABKMciPQ","number":990,"state":"open","title":"fix(deps): Bump the patch-and-minor group in /fast_api_voter with 21 updates","user":"dependabot[bot]","labels":["dependencies","python","queued","security"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-23T07:00:18.000Z","updated_at":"2026-10-24T02:37:57.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"fix(deps): Bump","group_name":"patch-and-minor","update_count":21,"packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"numpy","old_version":"2.5.3","new_version":"2.5.4","repository_url":"https://github.com/numpy/numpy"},{"name":"pydantic","old_version":"2.14.0","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":"sentry-sdk","old_version":"2.71.0","new_version":"2.72.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"starlette","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"wrapt","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"aiohttp","old_version":"3.14.4","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"hypothesis","old_version":"6.168.5","new_version":"6.170.0","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.16.10","new_version":"0.17.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"schemathesis","old_version":"4.30.0","new_version":"4.31.1","repository_url":"https://github.com/schemathesis/schemathesis"},{"name":"z3-solver","old_version":"5.1.0.0","new_version":"5.3.1.0","repository_url":"https://github.com/Z3Prover/z3"},{"name":"ast-serialize","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"filelock","old_version":"4.0.12","new_version":"4.2.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"jedi","old_version":"0.20.0","new_version":"0.20.1","repository_url":"https://github.com/davidhalter/jedi"},{"name":"markdown","old_version":"3.11","new_version":"3.11.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"narwhals","old_version":"2.26.0","new_version":"2.27.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"platformdirs","old_version":"4.12.4","new_version":"4.13.3","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"tomlkit","old_version":"0.15.1","new_version":"0.15.2","repository_url":"https://github.com/python-poetry/tomlkit"}],"path":"/fast_api_voter","ecosystem":"pip"},"body":"Bumps the patch-and-minor group in /fast_api_voter with 21 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.143.0` | `0.143.2` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.5.3` | `2.5.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.14.0` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.15.0` | `2.16.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.71.0` | `2.72.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.7.0` | `1.8.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.5.0` | `2.5.1` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.4` | `3.14.5` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.168.5` | `6.170.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.10` | `0.17.1` |\n| [schemathesis](https://github.com/schemathesis/schemathesis) | `4.30.0` | `4.31.1` |\n| [z3-solver](https://github.com/Z3Prover/z3) | `5.1.0.0` | `5.3.1.0` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.12.1` | `0.13.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `4.0.12` | `4.2.0` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.20.0` | `0.20.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.11` | `3.11.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.26.0` | `2.27.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.12.4` | `4.13.3` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.6.0` | `1.7.0` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.15.1` | `0.15.2` |\n\nUpdates `fastapi` from 0.143.0 to 0.143.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.143.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0c83cfae23d8068c9a3a5151ae69cac2e4e894d9\"\u003e\u003ccode\u003e0c83cfa\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6955ff746c204465ccbc8d648d86f5545a3bb55f\"\u003e\u003ccode\u003e6955ff7\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for ja (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16499\"\u003e#16499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aa1c3bac294c51b99728ef155d99569047598e04\"\u003e\u003ccode\u003eaa1c3ba\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6f33b2cb225ce981ddfefcb869c000d945062c6\"\u003e\u003ccode\u003ef6f33b2\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16501\"\u003e#16501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0474a7e88d7f294cc0985bea0913bbafbb7a8a66\"\u003e\u003ccode\u003e0474a7e\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.143.0...0.143.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httptools` 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/MagicStack/httptools/releases\"\u003ehttptools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade llhttp to 9.4.3 (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/153\"\u003e#153\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in eab7f640)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuild CPython 3.15 wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/148\"\u003e#148\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in b03516d9)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd RISC-V 64-bit wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/137\"\u003e#137\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gounthar\"\u003e\u003ccode\u003e@​gounthar\u003c/code\u003e\u003c/a\u003e in 1c6946dc)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Windows ARM64 support in CI (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/141\"\u003e#141\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/Harishmcw\"\u003e\u003ccode\u003e@​Harishmcw\u003c/code\u003e\u003c/a\u003e in 5a2bb07c)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuild PPC64LE wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/143\"\u003e#143\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/Sunidhi-Gaonkar1\"\u003e\u003ccode\u003e@​Sunidhi-Gaonkar1\u003c/code\u003e\u003c/a\u003e in ff08b99d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize test and release workflows (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/152\"\u003e#152\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in d80e26fe)\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/MagicStack/httptools/commit/104198474662752f4f4845c79007100829aff442\"\u003e\u003ccode\u003e1041984\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/154\"\u003e#154\u003c/a\u003e from MagicStack/release-0.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/aa5fbf941f2e58e0b3edc408b01eb49aadcca414\"\u003e\u003ccode\u003eaa5fbf9\u003c/code\u003e\u003c/a\u003e httptools v0.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/eab7f6403887a8881ffca3a65095c317e03b02ea\"\u003e\u003ccode\u003eeab7f64\u003c/code\u003e\u003c/a\u003e Upgrade llhttp to 9.4.3 (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/d80e26fe6dcc181ebd65e7a3da17448ccc5abdf4\"\u003e\u003ccode\u003ed80e26f\u003c/code\u003e\u003c/a\u003e Modernize test and release workflows (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/152\"\u003e#152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/b03516d983ac04cec750ece237cbf07cefb87900\"\u003e\u003ccode\u003eb03516d\u003c/code\u003e\u003c/a\u003e Build CPython 3.15 wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/ff08b99df42e957c5cfb9cddeb85ffa8378e09ca\"\u003e\u003ccode\u003eff08b99\u003c/code\u003e\u003c/a\u003e Build PPC64LE wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/5a2bb07cc2be05558d692adff10e223a1e6c3bf3\"\u003e\u003ccode\u003e5a2bb07\u003c/code\u003e\u003c/a\u003e Add Windows ARM64 support in CI (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/1c6946dccdffcb7818c19ddd8bf73123b4ccd297\"\u003e\u003ccode\u003e1c6946d\u003c/code\u003e\u003c/a\u003e ci: add riscv64 to wheel build matrix (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/MagicStack/httptools/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 `numpy` from 2.5.3 to 2.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.4 (Oct 10,  2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.5.4 Release Notes\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eReleased on 2026-10-10.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eNumPy 2.5.4 is a patch release that fixes bugs discovered after the 2.5.3\nrelease. Highlights are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMany typing fixes and improvements,\u003c/li\u003e\n\u003cli\u003eA workaround for the MSVC 19.51 bug, see below.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release supports Python versions 3.12-3.15.\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003enumpy.linalg.svd\u003c/code\u003e and \u003ccode\u003enumpy.linalg.lstsq\u003c/code\u003e now raise for inputs containing\ninfinities instead of returning garbage results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed hangs in \u003ccode\u003enumpy.linalg.svd\u003c/code\u003e and \u003ccode\u003enumpy.linalg.lstsq\u003c/code\u003e for certain inputs\ncontaining infinities for recent versions of some LAPACK implementations.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003enumpy.linalg.cond\u003c/code\u003e now handles non-finite inputs more consistently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/32593\"\u003egh-32593\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eStringDType hashing with NaN sentinels\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eStringDType\u003c/code\u003e instances with equivalent floating-point NaN sentinels now\nhave equal hashes. Previously, distinct NaN objects could produce equal\ndtype instances with different hashes, causing dictionary lookups and set\ndeduplication to fail.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/32563\"\u003egh-32563\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eMaskedArray\u003c/code\u003e resets a fill_value that cannot be represented in a new dtype\u003c/h3\u003e\n\u003cp\u003eA fill_value copied from a source array is now reset to the default fill_value\nfor the new dtype when it cannot be represented in that dtype. Previously the\ncopied value could be stale: ufuncs that change dtype left the result holding a\nfill_value typed for the old dtype, which raised a \u003ccode\u003eTypeError\u003c/code\u003e only when\nsomething later validated it (such as \u003ccode\u003e.view()\u003c/code\u003e), and a floating point\nfill_value that overflows an integer dtype was kept as an out-of-range value\ntogether with a \u003ccode\u003eRuntimeWarning\u003c/code\u003e. Both now fall back to the default,\nincluding when a masked array is passed to \u003ccode\u003eMaskedArray\u003c/code\u003e with a different\n\u003ccode\u003edtype\u003c/code\u003e. A fill_value given explicitly by the user is still validated and\nraises as before. This can now raise a \u003ccode\u003eComplexWarning\u003c/code\u003e if the fill_value is\ncomplex and the new dtype is real.\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/numpy/numpy/commit/a3d0ef1df045b858e68115001fdabc930bb3b68c\"\u003e\u003ccode\u003ea3d0ef1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32969\"\u003e#32969\u003c/a\u003e from charris/prepare-2.5.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/087b5367c84b5296c32c26c415438d87d3888586\"\u003e\u003ccode\u003e087b536\u003c/code\u003e\u003c/a\u003e MAINT: Make OpenBLAS version check use 2.5.x branch.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/91acd879242a679604579895d490c26f864a4b03\"\u003e\u003ccode\u003e91acd87\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.5.4 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9cc555bae07244551829c3a4eb7a635bef6345b3\"\u003e\u003ccode\u003e9cc555b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32956\"\u003e#32956\u003c/a\u003e from charris/backport-typing-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/e04b972a306136b8ac9219be199948badafa3475\"\u003e\u003ccode\u003ee04b972\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003edtype[void].names\u003c/code\u003e: allow setting with list (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32943\"\u003e#32943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d9299693d20c3fd1aa83b9464d074632cf59aaac\"\u003e\u003ccode\u003ed929969\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003etimedelta64\u003c/code\u003e: \u003ccode\u003edatetime.timedelta\u003c/code\u003e construction isn't deprecated (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/839467fdbcc1d68b68f4fe2a61d3387107c78394\"\u003e\u003ccode\u003e839467f\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003ema.getmaskarray\u003c/code\u003e: accept array-likes (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32934\"\u003e#32934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/64b721b23f51543ed9316a5fd21a48734760b429\"\u003e\u003ccode\u003e64b721b\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003epolynomial\u003c/code\u003e: accept scalar \u003ccode\u003ecoef\u003c/code\u003e in the poly constructors (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32931\"\u003e#32931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/06b7ad226e41b71919b2d35c50063998eced0b9d\"\u003e\u003ccode\u003e06b7ad2\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003evoid\u003c/code\u003e: accept any \u003ccode\u003edtype: str\u003c/code\u003e in constructor calls (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32928\"\u003e#32928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/c7bcd2c0aaca732b87575829cc61508076de1af5\"\u003e\u003ccode\u003ec7bcd2c\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003eplace\u003c/code\u003e: widen \u003ccode\u003emask\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32926\"\u003e#32926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.5.3...v2.5.4\"\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 `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 `sentry-sdk` from 2.71.0 to 2.72.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.72.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003euser_agent.original\u003c/code\u003e for inbound filters 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/7794\"\u003e#7794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7781\"\u003e#7781\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eServiceExtension\u003c/code\u003e class 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/7536\"\u003e#7536\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response, retry, and error span attributes 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/7499\"\u003e#7499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd common OTel AWS client attributes 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/7481\"\u003e#7481\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eWsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7793\"\u003e#7793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7780\"\u003e#7780\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(aiohttp) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7785\"\u003e#7785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp,sanic,tornado) Add \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7795\"\u003e#7795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7783\"\u003e#7783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7787\"\u003e#7787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(types) Export DataCollectionUserOptions from sentry_sdk.types 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/7957\"\u003e#7957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter IPv6 localhost detection 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/7786\"\u003e#7786\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eTrace the complete botocore client-call lifecycle 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/7538\"\u003e#7538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFinish \u003ccode\u003eStreamingBody\u003c/code\u003e span correctly 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/7540\"\u003e#7540\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Return \u003ccode\u003eNone\u003c/code\u003e from \u003ccode\u003ecapture_checkin\u003c/code\u003e when nothing is sent by \u003ca href=\"https://github.com/HardMax71\"\u003e\u003ccode\u003e@​HardMax71\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7868\"\u003e#7868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(scrubber) Scrub request bodies that are JSON arrays by \u003ca href=\"https://github.com/Om-singhaI\"\u003e\u003ccode\u003e@​Om-singhaI\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7561\"\u003e#7561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix span, metrics, log 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/7933\"\u003e#7933\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDeps\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7848\"\u003e#7848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7484\"\u003e#7484\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\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.72.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003euser_agent.original\u003c/code\u003e for inbound filters 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/7794\"\u003e#7794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7781\"\u003e#7781\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eServiceExtension\u003c/code\u003e class 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/7536\"\u003e#7536\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response, retry, and error span attributes 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/7499\"\u003e#7499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd common OTel AWS client attributes 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/7481\"\u003e#7481\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eWsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7793\"\u003e#7793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7780\"\u003e#7780\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(aiohttp) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7785\"\u003e#7785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp,sanic,tornado) Add \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7795\"\u003e#7795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7783\"\u003e#7783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7787\"\u003e#7787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(types) Export DataCollectionUserOptions from sentry_sdk.types 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/7957\"\u003e#7957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter IPv6 localhost detection 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/7786\"\u003e#7786\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eTrace the complete botocore client-call lifecycle 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/7538\"\u003e#7538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFinish \u003ccode\u003eStreamingBody\u003c/code\u003e span correctly 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/7540\"\u003e#7540\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Return \u003ccode\u003eNone\u003c/code\u003e from \u003ccode\u003ecapture_checkin\u003c/code\u003e when nothing is sent by \u003ca href=\"https://github.com/HardMax71\"\u003e\u003ccode\u003e@​HardMax71\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7868\"\u003e#7868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(scrubber) Scrub request bodies that are JSON arrays by \u003ca href=\"https://github.com/Om-singhaI\"\u003e\u003ccode\u003e@​Om-singhaI\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7561\"\u003e#7561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix span, metrics, log 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/7933\"\u003e#7933\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDeps\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7848\"\u003e#7848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7484\"\u003e#7484\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\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/getsentry/sentry-python/commit/9d245140804fb0238bf9718f53a53ee5b30f0f8d\"\u003e\u003ccode\u003e9d24514\u003c/code\u003e\u003c/a\u003e release: 2.72.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/4dc1d72fd49cf2c76b2b7a316d06f056da638150\"\u003e\u003ccode\u003e4dc1d72\u003c/code\u003e\u003c/a\u003e fix: Fix span, metrics, log client reports (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7933\"\u003e#7933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/578039961170fc5b27ab813861a5adb698372cff\"\u003e\u003ccode\u003e5780399\u003c/code\u003e\u003c/a\u003e feat(types): Export DataCollectionUserOptions from sentry_sdk.types (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7957\"\u003e#7957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/1ca032605a337eb1dee696b594c28d7620e93ddf\"\u003e\u003ccode\u003e1ca0326\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7848\"\u003e#7848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/f5bf69bc6abebccba900b4d2606995fdfdf87a5e\"\u003e\u003ccode\u003ef5bf69b\u003c/code\u003e\u003c/a\u003e ci(mypy): Bump version to 2.4.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7937\"\u003e#7937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/02210fa61b4fe2f5de849fa10984cd576118fafe\"\u003e\u003ccode\u003e02210fa\u003c/code\u003e\u003c/a\u003e ci(openai-agents): Bump version for type checking to 0.23.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7935\"\u003e#7935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/fcccb7b389adde78c05d73861d766d93dc4b85d0\"\u003e\u003ccode\u003efcccb7b\u003c/code\u003e\u003c/a\u003e ci(strawberry-graphql): Bump version for type checking to 0.332.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7936\"\u003e#7936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7cb80948cbdefb10831740c23b49e56e348532a5\"\u003e\u003ccode\u003e7cb8094\u003c/code\u003e\u003c/a\u003e chore: Deprecate \u003ccode\u003eai.monitoring.record_token_usage()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7918\"\u003e#7918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/1f4ba26cdd92ab9fe877af7b511ddff02e8bd8c5\"\u003e\u003ccode\u003e1f4ba26\u003c/code\u003e\u003c/a\u003e chore: Deprecate \u003ccode\u003esend_default_pii\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7694\"\u003e#7694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/4b9d329880aeb696d88d735fb01956b06a46e923\"\u003e\u003ccode\u003e4b9d329\u003c/code\u003e\u003c/a\u003e refactor: move FastAPI active thread tracking into Starlette (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7825\"\u003e#7825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.71.0...2.72.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.7.0 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/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.8.0\u003c/h2\u003e\n\u003cp\u003eThis release adds HTTP 103 Early Hints, preserves response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e, and stops \u003ccode\u003eFileResponse\u003c/code\u003e transfers when clients disconnect. Starlette now requires Python 3.11.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.response.start\u003c/code\u003e immediately in \u003ccode\u003eGZipMiddleware\u003c/code\u003e for responses with an existing \u003ccode\u003eContent-Encoding\u003c/code\u003e, status \u003ccode\u003e206\u003c/code\u003e, or an excluded content type, instead of waiting for the first body chunk \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3631\"\u003e#3631\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eResolve the multipart charset once per request instead of once per field \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3618\"\u003e#3618\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop \u003ccode\u003eFileResponse\u003c/code\u003e transfers when the client disconnects \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3523\"\u003e#3523\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop multipart range responses when the file ends before a range is complete, instead of looping forever \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3583\"\u003e#3583\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eRange\u003c/code\u003e when \u003ccode\u003eIf-Range\u003c/code\u003e contains a weak ETag \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3567\"\u003e#3567\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eAllow: GET, HEAD\u003c/code\u003e in \u003ccode\u003eStaticFiles\u003c/code\u003e \u003ccode\u003e405\u003c/code\u003e responses \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3640\"\u003e#3640\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eClose \u003ccode\u003eRequest.stream()\u003c/code\u003e generators deterministically, avoiding \u0026quot;Exception ignored\u0026quot; errors with stacked \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3628\"\u003e#3628\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eVary: Cookie\u003c/code\u003e when \u003ccode\u003eSession.pop()\u003c/code\u003e removes an existing key \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3186\"\u003e#3186\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003eMax-Age=0\u003c/code\u003e on the session cookie when \u003ccode\u003eSessionMiddleware\u003c/code\u003e uses \u003ccode\u003emax_age=0\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3651\"\u003e#3651\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3617\"\u003e#3617\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/starlette/compare/1.7.0...1.8.0\"\u003e1.7.0...1.8.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/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.8.0 (October 13, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release drops Python 3.10 support and adds HTTP 103 Early Hints.\u003c/p\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.response.start\u003c/code\u003e immediately in \u003ccode\u003eGZipMiddleware\u003c/code\u003e for responses with an existing \u003ccode\u003eContent-Encoding\u003c/code\u003e, status \u003ccode\u003e206\u003c/code\u003e, or an excluded content type, instead of waiting for the first body chunk \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3631\"\u003e#3631\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eResolve the multipart charset once per request instead of once per field \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3618\"\u003e#3618\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop \u003ccode\u003eFileResponse\u003c/code\u003e transfers when the client disconnects \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3523\"\u003e#3523\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop multipart range responses when the file ends before a range is complete, instead of looping forever \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3583\"\u003e#3583\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eRange\u003c/code\u003e when \u003ccode\u003eIf-Range\u003c/code\u003e contains a weak ETag \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3567\"\u003e#3567\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eAllow: GET, HEAD\u003c/code\u003e in \u003ccode\u003eStaticFiles\u003c/code\u003e \u003ccode\u003e405\u003c/code\u003e responses \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3640\"\u003e#3640\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eClose \u003ccode\u003eRequest.stream()\u003c/code\u003e generators deterministically, avoiding \u0026quot;Exception ignored\u0026quot; errors with stacked \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3628\"\u003e#3628\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eVary: Cookie\u003c/code\u003e when \u003ccode\u003eSession.pop()\u003c/code\u003e removes an existing key \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3186\"\u003e#3186\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003eMax-Age=0\u003c/code\u003e on the session cookie when \u003ccode\u003eSessionMiddleware\u003c/code\u003e uses \u003ccode\u003emax_age=0\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3651\"\u003e#3651\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3617\"\u003e#3617\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/starlette/commit/7b2948fe7b7fff28bb018607d54cd4dfa518910e\"\u003e\u003ccode\u003e7b2948f\u003c/code\u003e\u003c/a\u003e Version 1.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3660\"\u003e#3660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/5b544ced7345d8b2315419ecaded4b52bffe6b76\"\u003e\u003ccode\u003e5b544ce\u003c/code\u003e\u003c/a\u003e Send response start immediately when GZipMiddleware cannot compress (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3631\"\u003e#3631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/96d5023c55b29224edb8d684868c49f681d079a9\"\u003e\u003ccode\u003e96d5023\u003c/code\u003e\u003c/a\u003e Emit \u003ccode\u003eMax-Age=0\u003c/code\u003e on session cookie when \u003ccode\u003emax_age=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3651\"\u003e#3651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/0a15da395d13e8eb6ecadeb6f4928d7d7c493fc8\"\u003e\u003ccode\u003e0a15da3\u003c/code\u003e\u003c/a\u003e Include allowed methods in StaticFiles 405 responses (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3640\"\u003e#3640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/ff5b4df55ac4ac625582ecc446c850200c91ae64\"\u003e\u003ccode\u003eff5b4df\u003c/code\u003e\u003c/a\u003e Close \u003ccode\u003eRequest.stream()\u003c/code\u003e generators with \u003ccode\u003eaclosing\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/7cb2f09c1858ea1400afbd355a900ce14d720533\"\u003e\u003ccode\u003e7cb2f09\u003c/code\u003e\u003c/a\u003e Mark sessions as accessed when popping existing keys (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3186\"\u003e#3186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c67ca4eeef171c679074f4ebc579ee5dbd657aa8\"\u003e\u003ccode\u003ec67ca4e\u003c/code\u003e\u003c/a\u003e Add HTTP 103 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/04741d073fb6c3ab5fccad08be8ae7aad1f67e91\"\u003e\u003ccode\u003e04741d0\u003c/code\u003e\u003c/a\u003e Update broken external documentation links (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3621\"\u003e#3621\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/470f986deb9cc3f4475ba0b49ae9f80c380d9fce\"\u003e\u003ccode\u003e470f986\u003c/code\u003e\u003c/a\u003e Correct the documented WebSocket and Request constructor signatures (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/b2e8750b4aaa183553d32a61cf553bef8d406465\"\u003e\u003ccode\u003eb2e8750\u003c/code\u003e\u003c/a\u003e Bracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3617\"\u003e#3617\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.7.0...1.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `wrapt` from 2.5.0 to 2.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/GrahamDumpleton/wrapt/releases\"\u003ewrapt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ewrapt 2.5.1\u003c/h2\u003e\n\u003cp\u003eFull release notes: \u003ca href=\"https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\"\u003ehttps://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eInstall from PyPi (recommended):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install wrapt==2.5.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePyPi uploads follow each GitHub release; if \u003ccode\u003epip\u003c/code\u003e reports the\nversion is unavailable, the matching PyPi upload may not have\nhappened yet.\u003c/p\u003e\n\u003cp\u003ePre-built wheels are provided for a range of Python versions\nand platforms (Linux x86_64/aarch64/riscv64, macOS x86_64 and\narm64, Windows x86_64 and arm64, plus PyPy and free-threaded\nbuilds). The source distribution is also attached together\nwith \u003ccode\u003eSHA256SUMS\u003c/code\u003e for verification.\u003c/p\u003e\n\u003ch2\u003ewrapt 2.5.1rc1\u003c/h2\u003e\n\u003cp\u003eRelease candidate. Release notes for the upcoming\n2.5.1 final (work in progress): \u003ca href=\"https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\"\u003ehttps://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eMay be installable from PyPi:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install wrapt==2.5.1rc1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf \u003ccode\u003epip\u003c/code\u003e reports the version is unavailable, this candidate\neither has not been uploaded yet or is not being published to\nPyPi. Use the attached wheels or build from the source\ndistribution instead:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003etar xf wrapt-2.5.1rc1.tar.gz\ncd wrapt-2.5.1rc1\npip install .\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003ccode\u003eSHA256SUMS\u003c/code\u003e is attached for verification of the archives.\u003c/p\u003e\n\u003ch2\u003ewrapt 2.5.1.dev1\u003c/h2\u003e\n\u003cp\u003eDevelopment snapshot. Not normally published to PyPi\n(occasionally uploaded to exercise the release pipeline).\u003c/p\u003e\n\u003cp\u003eRelease notes for the upcoming 2.5.1 final (work in\nprogress): \u003ca href=\"https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\"\u003ehttps://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePlatform wheels and the source distribution are attached. To\ntest against your Python install, either grab a matching wheel\nor build from the source distribution:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install wrapt-2.5.1.dev1-\u0026lt;python\u0026gt;-\u0026lt;abi\u0026gt;-\u0026lt;platform\u0026gt;.whl\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eor\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/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst\"\u003ewrapt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.5.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugs Fixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA \u003ccode\u003eLazyObjectProxy\u003c/code\u003e created with an \u003ccode\u003einterface\u003c/code\u003e argument that\ndeclared a path-like type, such as \u003ccode\u003eos.PathLike\u003c/code\u003e or \u003ccode\u003epathlib.Path\u003c/code\u003e,\ndid not define the \u003ccode\u003e__fspath__()\u003c/code\u003e special method on the class it\ngenerated. Because \u003ccode\u003eos.fspath()\u003c/code\u003e looks up \u003ccode\u003e__fspath__()\u003c/code\u003e on the type\nof the object, passing such a proxy to \u003ccode\u003eos.fspath()\u003c/code\u003e, the builtin\n\u003ccode\u003eopen()\u003c/code\u003e or other standard library functions accepting paths raised\n\u003ccode\u003eTypeError\u003c/code\u003e before the factory callable had been invoked to create the\nwrapped object. The \u003ccode\u003e__fspath__()\u003c/code\u003e special method is now added when the\ndeclared interface provides it, in the same way as is already done for\nthe other special methods looked up on the type, so the first path\nconversion triggers creation of the wrapped object and succeeds. With\nthanks to Muneeb Sheikh for \u003ccode\u003epull request [#360](https://github.com/GrahamDumpleton/wrapt/issues/360) \u0026lt;https://github.com/GrahamDumpleton/wrapt/pull/360\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA callback passed to \u003ccode\u003ewrapt.WeakFunctionProxy\u003c/code\u003e which was callable but\nevaluated as false, such as an event emitter object which reports its\nnumber of subscribers via \u003ccode\u003e__len__()\u003c/code\u003e and is empty when first created,\nwas passed the underlying weak reference object instead of the proxy\nwhen the wrapped function expired. Where the wrapped function was a\nbound method, such a callback could also be called twice, once each\nwhen the instance and the function expired. Only \u003ccode\u003eNone\u003c/code\u003e is now treated\nas meaning no callback was supplied, which mirrors the behaviour of\n\u003ccode\u003eweakref.ref()\u003c/code\u003e and \u003ccode\u003eweakref.proxy()\u003c/code\u003e in the standard library, so\nthese callbacks now receive the proxy and are called only once, as for\nany other callback. With thanks to Huanyi Xie for \u003ccode\u003epull request [#359](https://github.com/GrahamDumpleton/wrapt/issues/359) \u0026lt;https://github.com/GrahamDumpleton/wrapt/pull/359\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA \u003ccode\u003ewrapt.AdapterFactory\u003c/code\u003e instance passed as the \u003ccode\u003eadapter\u003c/code\u003e argument\nto \u003ccode\u003ewrapt.decorator\u003c/code\u003e was ignored, and so never called, if the instance\nevaluated as false, such as when the factory class defined \u003ccode\u003e__bool__()\u003c/code\u003e\nor \u003ccode\u003e__len__()\u003c/code\u003e. The decorated function then retained its original\nsignature instead of that produced by the factory. Whether an adapter\nfactory was supplied is now determined by type before the truth value\nof the adapter is considered, so such factories are always called. As a\nconsequence of this change a factory can now also return \u003ccode\u003eNone\u003c/code\u003e, or\nany other false value, to indicate that no adapter should be used for a\nparticular function, where previously this failed with an obscure error.\nWith thanks to Luochenchen for \u003ccode\u003epull request [#358](https://github.com/GrahamDumpleton/wrapt/issues/358) \u0026lt;https://github.com/GrahamDumpleton/wrapt/pull/358\u0026gt;\u003c/code\u003e_ which identified\nthe issue.\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/GrahamDumpleton/wrapt/commit/dbbb21fa76915541a850a2029e97c116f38a53b0\"\u003e\u003ccode\u003edbbb21f\u003c/code\u003e\u003c/a\u003e Merge branch 'release/2.5.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/95e2afbb47cadfdff5e19ec88ba7caf718bd4a45\"\u003e\u003ccode\u003e95e2afb\u003c/code\u003e\u003c/a\u003e Drop the release candidate suffix for the 2.5.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/1ed68ca8c32b15c59dea50032b08bc3271529ec3\"\u003e\u003ccode\u003e1ed68ca\u003c/code\u003e\u003c/a\u003e Update to 2.5.1rc1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/77e826dd8973c960f0733977ec67f43896a4d050\"\u003e\u003ccode\u003e77e826d\u003c/code\u003e\u003c/a\u003e Recognise adapter factories by type so one which evaluates as false is not ig...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/13efe635b6942394977b016cfd2d8ac6530a8124\"\u003e\u003ccode\u003e13efe63\u003c/code\u003e\u003c/a\u003e Move change note for PR \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/359\"\u003e#359\u003c/a\u003e under 2.5.1 and add clarifying comments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/6ba6048628e7a1c584bd767b451037dc36dd6b03\"\u003e\u003ccode\u003e6ba6048\u003c/code\u003e\u003c/a\u003e Reorder \u003cstrong\u003efspath\u003c/strong\u003e handling in lazy proxy and add change note for PR \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/360\"\u003e#360\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/5e97e2d1a3c2effc9f1f8357f83802e6cbce8998\"\u003e\u003ccode\u003e5e97e2d\u003c/code\u003e\u003c/a\u003e Update to 2.5.1.dev1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/e9d491c7c8b31747e9dc280f48783d69d9ac2904\"\u003e\u003ccode\u003ee9d491c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/359\"\u003e#359\u003c/a\u003e from xiehuanyi/fix-falsey-weak-proxy-callbacks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/0d6c935bac4fe9c4b3ca2a0f696950024b8b07bc\"\u003e\u003ccode\u003e0d6c935\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/360\"\u003e#360\u003c/a\u003e from muneikh/fix-lazy-pathlike-interface\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/de574aa4fd5ca3c272e533dfd250a4868bfacbb3\"\u003e\u003ccode\u003ede574aa\u003c/code\u003e\u003c/a\u003e Honor the declared pathlike interface in lazy proxies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/GrahamDumpleton/wrapt/compare/2.5.0...2.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.4 to 3.14.5\nUpdates `hypothesis` from 6.168.5 to 6.170.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7572cd07bbb9d845c40f71c95ba3853fb7467403\"\u003e\u003ccode\u003e7572cd0\u003c/code\u003e\u003c/a\u003e Bump hypothesis version to 6.170.0 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/1ad039f4ead3a91721bb8adde8da6c46979d549c\"\u003e\u003ccode\u003e1ad039f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4871\"\u003e#4871\u003c/a\u003e from Zac-HD/claude/hypothesi...\n\n_Description has been truncated_","html_url":"https://github.com/Burbanit0/Vote-App/pull/990","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Burbanit0%2FVote-App/issues/990","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/990/packages"},{"uuid":"5978224567","node_id":"PR_kwDOVK_bNc8AAAABKAXlYQ","number":6,"state":"open","title":"Bump fastapi from 0.143.0 to 0.147.0","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-22T11:14:36.000Z","updated_at":"2026-10-22T11:20:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.147.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.147.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.147.0\u003c/h2\u003e\n\u003cp\u003eOmitted \u003ccode\u003ebool\u003c/code\u003e and \u003ccode\u003ebool | None\u003c/code\u003e form fields are now interpreted as \u003ccode\u003eFalse\u003c/code\u003e, matching unchecked HTML checkboxes. This applies to individual \u003ccode\u003eForm\u003c/code\u003e parameters and form models, including required fields and fields with defaults of \u003ccode\u003eTrue\u003c/code\u003e or \u003ccode\u003eNone\u003c/code\u003e. The inferred value is considered explicitly set, including in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eJSON requests and direct Pydantic validation are unchanged. See \u003ca href=\"https://fastapi.tiangolo.com/tutorial/request-forms/#boolean-form-fields\"\u003eBoolean Form Fields\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat omitted boolean form fields as False. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16523\"\u003e#16523\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Add tests for parameter defaults, nullability, and browser form behavior. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14829\"\u003e#14829\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\u003ch2\u003e0.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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.145.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16518\"\u003e#16518\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📝 Document URL paths in templates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16517\"\u003e#16517\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.144.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add WebSocket support to security dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/10147\"\u003e#10147\u003c/a\u003e by \u003ca href=\"https://github.com/mnixry\"\u003e\u003ccode\u003e@​mnixry\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9383\"\u003e#9383\u003c/a\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.4\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add httpx2 to optional dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16512\"\u003e#16512\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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\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/f63265848ef3caa5be5deba05ec6eabb169d9fb2\"\u003e\u003ccode\u003ef632658\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.147.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16524\"\u003e#16524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1875e964242f9de85259bda8c952105ee79e9a29\"\u003e\u003ccode\u003e1875e96\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/19c0b7a5b0c18a6f2e7c0763884654f48ffa3ff1\"\u003e\u003ccode\u003e19c0b7a\u003c/code\u003e\u003c/a\u003e 🐛 Treat omitted boolean form fields as False (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16523\"\u003e#16523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e5c786d7e1ebff20c4a83f09da19646944f830eb\"\u003e\u003ccode\u003ee5c786d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6a5069998a75e096c2c84ccff73e234a43d9d7b7\"\u003e\u003ccode\u003e6a50699\u003c/code\u003e\u003c/a\u003e ✅ Add tests for parameter defaults, nullability, and browser form behavior (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3070b5105fe02c4afdba5e3aea6c2cf2e3796c7f\"\u003e\u003ccode\u003e3070b51\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.146.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16521\"\u003e#16521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a17bd595ae17d5b8ec01f2acc291f36844d478fe\"\u003e\u003ccode\u003ea17bd59\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/45c419938435d668a85a2e81bb9ac41495f8a648\"\u003e\u003ccode\u003e45c4199\u003c/code\u003e\u003c/a\u003e 🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16520\"\u003e#16520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/129c9cfcd33c3ed4371c9674e724fd838a292e2b\"\u003e\u003ccode\u003e129c9cf\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.145.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16519\"\u003e#16519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/475b46638fd2ea6608f80418a6333a9107340e28\"\u003e\u003ccode\u003e475b466\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.143.0...0.147.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=fastapi\u0026package-manager=pip\u0026previous-version=0.143.0\u0026new-version=0.147.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/legendlucky/gaanaapi/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/legendlucky%2Fgaanaapi/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"5973517829","node_id":"PR_kwDOO4ncns8AAAABJ8l_MA","number":662,"state":"open","title":"build(deps): bump the all-dependencies group across 1 directory with 40 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-22T05:15:31.000Z","updated_at":"2026-10-22T05:15:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"all-dependencies","update_count":40,"packages":[{"name":"openai","old_version":"2.8.1","new_version":"2.48.0","repository_url":"https://github.com/openai/openai-python"},{"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.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"aiohttp","old_version":"3.13.2","new_version":"3.13.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"uvicorn","old_version":"0.31.1","new_version":"0.39.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.23.0","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"fastapi","old_version":"0.121.3","new_version":"0.128.8","repository_url":"https://github.com/fastapi/fastapi"},{"name":"orjson","old_version":"3.11.4","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"apscheduler","old_version":"3.11.1","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"fastapi-sso","old_version":"0.16.0","new_version":"0.20.0","repository_url":"https://github.com/tomasvotava/fastapi-sso"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-multipart","old_version":"0.0.18","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"prisma","old_version":"0.11.0","new_version":"0.15.0","repository_url":"https://github.com/RobertCraigie/prisma-client-py"},{"name":"azure-identity","old_version":"1.25.1","new_version":"1.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-keyvault-secrets","old_version":"4.11.2","new_version":"4.11.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.30.1","new_version":"12.30.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-kms","old_version":"3.6.0","new_version":"3.13.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-iam","old_version":"2.19.1","new_version":"2.23.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"resend","old_version":"2.43.0","new_version":"2.50.0","repository_url":"https://github.com/resendlabs/resend-python"},{"name":"pynacl","old_version":"1.6.1","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"name":"boto3","old_version":"1.36.0","new_version":"1.42.97","repository_url":"https://github.com/boto/boto3"},{"name":"mcp","old_version":"1.22.0","new_version":"1.30.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"litellm-proxy-extras","old_version":"0.4.9","new_version":"0.4.110","repository_url":"https://github.com/BerriAI/litellm"},{"name":"rich","old_version":"13.7.1","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"litellm-enterprise","old_version":"0.1.22","new_version":"0.1.78","repository_url":"https://github.com/BerriAI/litellm"},{"name":"polars","old_version":"1.35.2","new_version":"2.0.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"semantic-router","old_version":"0.1.12","new_version":"0.2.0.dev1","repository_url":"https://github.com/aurelio-labs/semantic-router"},{"name":"mlflow","old_version":"3.16.0","new_version":"3.17.1","repository_url":"https://github.com/mlflow/mlflow"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"ruff","old_version":"0.16.6","new_version":"0.17.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"prometheus-client","old_version":"0.20.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"tzdata","old_version":"2026.3","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"},{"name":"google-cloud-aiplatform","old_version":"2.1.0","new_version":"2.5.0","repository_url":"https://github.com/googleapis/python-aiplatform"},{"name":"google-genai","old_version":"2.22.0","new_version":"2.31.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"anthropic","old_version":"1.4.0","new_version":"1.15.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"ddtrace","old_version":"4.14.0","new_version":"4.16.0","repository_url":"https://github.com/DataDog/dd-trace-py"},{"name":"azure-storage-file-datalake","old_version":"12.25.0","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"sentry-sdk","old_version":"2.69.1","new_version":"2.72.0","repository_url":"https://github.com/getsentry/sentry-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 40 updates in the /litellm-main(2)/litellm-main directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openai](https://github.com/openai/openai-python) | `2.8.1` | `2.48.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.22.2` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.2` | `3.13.5` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.31.1` | `0.39.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.23.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.121.3` | `0.128.8` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.4` | `3.11.5` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.1` | `3.11.3` |\n| [fastapi-sso](https://github.com/tomasvotava/fastapi-sso) | `0.16.0` | `0.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.15.1` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.18` | `0.0.20` |\n| [prisma](https://github.com/RobertCraigie/prisma-client-py) | `0.11.0` | `0.15.0` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.25.1` | `1.26.0` |\n| [azure-keyvault-secrets](https://github.com/Azure/azure-sdk-for-python) | `4.11.2` | `4.11.3` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.30.1` | `12.30.3` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.6.0` | `3.13.0` |\n| [google-cloud-iam](https://github.com/googleapis/google-cloud-python) | `2.19.1` | `2.23.0` |\n| [resend](https://github.com/resendlabs/resend-python) | `2.43.0` | `2.50.0` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.6.1` | `1.6.2` |\n| [boto3](https://github.com/boto/boto3) | `1.36.0` | `1.42.97` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.22.0` | `1.30.0` |\n| [litellm-proxy-extras](https://github.com/BerriAI/litellm) | `0.4.9` | `0.4.110` |\n| [rich](https://github.com/Textualize/rich) | `13.7.1` | `15.0.0` |\n| [litellm-enterprise](https://github.com/BerriAI/litellm) | `0.1.22` | `0.1.78` |\n| [polars](https://github.com/pola-rs/polars) | `1.35.2` | `2.0.0` |\n| [semantic-router](https://github.com/aurelio-labs/semantic-router) | `0.1.12` | `0.2.0.dev1` |\n| [mlflow](https://github.com/mlflow/mlflow) | `3.16.0` | `3.17.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.6` | `0.17.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.20.0` | `0.26.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [tzdata](https://github.com/python/tzdata) | `2026.3` | `2026.5` |\n| [google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform) | `2.1.0` | `2.5.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.22.0` | `2.31.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `1.4.0` | `1.15.0` |\n| [ddtrace](https://github.com/DataDog/dd-trace-py) | `4.14.0` | `4.16.0` |\n| [azure-storage-file-datalake](https://github.com/Azure/azure-sdk-for-python) | `12.25.0` | `12.26.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.69.1` | `2.72.0` |\n\n\nUpdates `openai` from 2.8.1 to 2.48.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.48.0\u003c/h2\u003e\n\u003ch2\u003e2.48.0 (2026-07-23)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.47.0...v2.48.0\"\u003ev2.47.0...v2.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e accept \u003ccode\u003eNone\u003c/code\u003e for prompt_cache_key/safety_identifier (\u003ca href=\"https://github.com/openai/openai-python/commit/36820e69ba6cf1dc3f8d411e48a36e56084fbbc4\"\u003e36820e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for \u003ccode\u003espend_limit\u003c/code\u003e admin apis (\u003ca href=\"https://github.com/openai/openai-python/commit/1ff13afb6e831394036686a1c352bbec6d704c68\"\u003e1ff13af\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.47.0\u003c/h2\u003e\n\u003ch2\u003e2.47.0 (2026-07-21)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.46.0...v2.47.0\"\u003ev2.46.0...v2.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e Add experimental runtime support for HTTPX2 clients (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3524\"\u003e#3524\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/317260cd16395b2338bcdaacd7daa0b179c90105\"\u003e317260c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estlc:\u003c/strong\u003e configurable CI runner and private-production-repo support in workflow templates (\u003ca href=\"https://github.com/openai/openai-python/commit/4303e974f08394789c6075b6745357b2f1c36e21\"\u003e4303e97\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e require patched aiohttp on Python 3.10+ (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3515\"\u003e#3515\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d4dceb221b9a92c55c232d5b330ae89beb539415\"\u003ed4dceb2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.46.0\u003c/h2\u003e\n\u003ch2\u003e2.46.0 (2026-07-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.45.0...v2.46.0\"\u003ev2.45.0...v2.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e /organization/projects/{project_id}/service_accounts/{service_account_id}/api_keys\u0026quot; endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/5a0094194eac9c605c8ca84d47d1c5518f8e2131\"\u003e5a00941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add owner_project_access to APIKeyListParams (\u003ca href=\"https://github.com/openai/openai-python/commit/f589d04bf9f377ecb1f54335ab3ab9d825b5dfee\"\u003ef589d04\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/980f176e83ee5d991bf9e8e4def80d9905ade5ec\"\u003e980f176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/2eae984315580cdbf9ceb14d6cb568c581baa768\"\u003e2eae984\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve generated type compatibility (\u003ca href=\"https://github.com/openai/openai-python/commit/00bd72adbe03f4b5c4b89d91b8d317f11b58bbdf\"\u003e00bd72a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove beta annotation compatibility aliases (\u003ca href=\"https://github.com/openai/openai-python/commit/99dbd15ff3ad1628b94a729a6b688212d4655908\"\u003e99dbd15\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.45.0\u003c/h2\u003e\n\u003ch2\u003e2.45.0 (2026-07-09)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.44.0...v2.45.0\"\u003ev2.44.0...v2.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.48.0 (2026-07-23)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.47.0...v2.48.0\"\u003ev2.47.0...v2.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e accept \u003ccode\u003eNone\u003c/code\u003e for prompt_cache_key/safety_identifier (\u003ca href=\"https://github.com/openai/openai-python/commit/36820e69ba6cf1dc3f8d411e48a36e56084fbbc4\"\u003e36820e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for \u003ccode\u003espend_limit\u003c/code\u003e admin apis (\u003ca href=\"https://github.com/openai/openai-python/commit/1ff13afb6e831394036686a1c352bbec6d704c68\"\u003e1ff13af\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.47.0 (2026-07-21)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.46.0...v2.47.0\"\u003ev2.46.0...v2.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e Add experimental runtime support for HTTPX2 clients (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3524\"\u003e#3524\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/317260cd16395b2338bcdaacd7daa0b179c90105\"\u003e317260c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estlc:\u003c/strong\u003e configurable CI runner and private-production-repo support in workflow templates (\u003ca href=\"https://github.com/openai/openai-python/commit/4303e974f08394789c6075b6745357b2f1c36e21\"\u003e4303e97\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e require patched aiohttp on Python 3.10+ (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3515\"\u003e#3515\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d4dceb221b9a92c55c232d5b330ae89beb539415\"\u003ed4dceb2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.46.0 (2026-07-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.45.0...v2.46.0\"\u003ev2.45.0...v2.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e /organization/projects/{project_id}/service_accounts/{service_account_id}/api_keys\u0026quot; endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/5a0094194eac9c605c8ca84d47d1c5518f8e2131\"\u003e5a00941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add owner_project_access to APIKeyListParams (\u003ca href=\"https://github.com/openai/openai-python/commit/f589d04bf9f377ecb1f54335ab3ab9d825b5dfee\"\u003ef589d04\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/980f176e83ee5d991bf9e8e4def80d9905ade5ec\"\u003e980f176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/2eae984315580cdbf9ceb14d6cb568c581baa768\"\u003e2eae984\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve generated type compatibility (\u003ca href=\"https://github.com/openai/openai-python/commit/00bd72adbe03f4b5c4b89d91b8d317f11b58bbdf\"\u003e00bd72a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove beta annotation compatibility aliases (\u003ca href=\"https://github.com/openai/openai-python/commit/99dbd15ff3ad1628b94a729a6b688212d4655908\"\u003e99dbd15\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.45.0 (2026-07-09)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.44.0...v2.45.0\"\u003ev2.44.0...v2.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e gpt-5.6-sol updates (\u003ca href=\"https://github.com/openai/openai-python/commit/039d1feb264a2dca7195ba5028e9fb47a5e04987\"\u003e039d1fe\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\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/openai/openai-python/commit/8a6adcb3b88d89462a0fc5a81f50d9775c9ca138\"\u003e\u003ccode\u003e8a6adcb\u003c/code\u003e\u003c/a\u003e release: 2.48.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/cbd2fba7c48b6376e80775cb191e2eda1d476c61\"\u003e\u003ccode\u003ecbd2fba\u003c/code\u003e\u003c/a\u003e feat(api): add support for \u003ccode\u003espend_limit\u003c/code\u003e admin apis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/00709f2ae951ce79705467e92d71a926a46b82f6\"\u003e\u003ccode\u003e00709f2\u003c/code\u003e\u003c/a\u003e feat(api): accept \u003ccode\u003eNone\u003c/code\u003e for prompt_cache_key/safety_identifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e67afa88433dad9f97e733ae8f2ee6e9c240bc51\"\u003e\u003ccode\u003ee67afa8\u003c/code\u003e\u003c/a\u003e release: 2.47.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e1925e9804aa1bbd33359d91ed3fee105cac103f\"\u003e\u003ccode\u003ee1925e9\u003c/code\u003e\u003c/a\u003e feat(client): Add experimental runtime support for HTTPX2 clients (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3524\"\u003e#3524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/7f4edb662abdeb8178c9df48023975684aea4349\"\u003e\u003ccode\u003e7f4edb6\u003c/code\u003e\u003c/a\u003e feat(stlc): configurable CI runner and private-production-repo support in wor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/d4dceb221b9a92c55c232d5b330ae89beb539415\"\u003e\u003ccode\u003ed4dceb2\u003c/code\u003e\u003c/a\u003e fix(deps): require patched aiohttp on Python 3.10+ (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3515\"\u003e#3515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/b140f45c2c1850306a91113245639a0a41f19f28\"\u003e\u003ccode\u003eb140f45\u003c/code\u003e\u003c/a\u003e ci: Set up CodeQL scanning (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3514\"\u003e#3514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/0e6adb15adc1e74087bcb402de7a75e4fbc0aecb\"\u003e\u003ccode\u003e0e6adb1\u003c/code\u003e\u003c/a\u003e release: 2.46.0 (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3501\"\u003e#3501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/f16fbbd2bd25dc1ff150b5f78dbd15ff6bab6d91\"\u003e\u003ccode\u003ef16fbbd\u003c/code\u003e\u003c/a\u003e release: 2.45.0 (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.8.1...v2.48.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tiktoken` from 0.12.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/tiktoken/blob/main/CHANGELOG.md\"\u003etiktoken's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v0.14.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuild wheels for Python 3.15\u003c/li\u003e\n\u003cli\u003eSupport looking up more GPT-5 series models\u003c/li\u003e\n\u003cli\u003eUpgrade dependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[v0.13.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate fancy-regex for significantly increased performance\u003c/li\u003e\n\u003cli\u003eBranch byte pair encoding to fix performance on unusual input\u003c/li\u003e\n\u003cli\u003eFix AttributeError caused by incomplete redaction of experimental code\u003c/li\u003e\n\u003cli\u003eUpdate version of \u003ccode\u003epyo3\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate version of optional dependency \u003ccode\u003eblobfile\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/openai/tiktoken/commit/4e71bbe0c078468e00fefbf94b39849389f346e5\"\u003e\u003ccode\u003e4e71bbe\u003c/code\u003e\u003c/a\u003e Release 0.14.0 (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/212b893ba940cba53476851103d2e5c1d0020c6e\"\u003e\u003ccode\u003e212b893\u003c/code\u003e\u003c/a\u003e Fail open for GPT-5 model tokenisers (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/4187ba33e48b7c554de02c17149ff0c5e50ddf38\"\u003e\u003ccode\u003e4187ba3\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/595\"\u003e#595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/92a82552fc5d046839f83e3505a6d9b002208ac2\"\u003e\u003ccode\u003e92a8255\u003c/code\u003e\u003c/a\u003e Remove test-skip comment for macOS arm64 (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/674f5e65caad92c2b17f944fbdc4256fea32890e\"\u003e\u003ccode\u003e674f5e6\u003c/code\u003e\u003c/a\u003e Build Python 3.15 (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/594\"\u003e#594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/dbea866194b3c7d496a029c8faf9ad238064a992\"\u003e\u003ccode\u003edbea866\u003c/code\u003e\u003c/a\u003e Remove deprecated freethreading build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/f6782242d03134d18b9a551845fd7d69fd23106e\"\u003e\u003ccode\u003ef678224\u003c/code\u003e\u003c/a\u003e Update cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/08a5f3b2c987ada4fc5aa1f16c643c203fa8acaa\"\u003e\u003ccode\u003e08a5f3b\u003c/code\u003e\u003c/a\u003e ci: use static artifact name for sdist build job (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/fa8b65d062fb6a656ac3810c89efde4c8ab999e2\"\u003e\u003ccode\u003efa8b65d\u003c/code\u003e\u003c/a\u003e Partial sync of codebase (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/dcb39287a1f90a94d4bf6146df25da03c017646f\"\u003e\u003ccode\u003edcb3928\u003c/code\u003e\u003c/a\u003e [codex] Pin GitHub Actions workflow references (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/tiktoken/compare/0.12.0...0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.1 to 0.22.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.22.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eOkay mostly doing the release for these PR:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate deserialize of added tokens by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1891\"\u003ehuggingface/tokenizers#1891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate stub for typing by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1896\"\u003ehuggingface/tokenizers#1896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebump PyO3 to 0.26 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1901\"\u003ehuggingface/tokenizers#1901\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eBasically good typing with at least \u003ccode\u003ety\u003c/code\u003e, and a lot fast (from 4 to 8x faster) loading vocab with a lot of added tokens and GIL free !?\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eci: add support for building Win-ARM64 wheels by \u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1869\"\u003ehuggingface/tokenizers#1869\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd cargo-semver-checks to Rust CI workflow by \u003ca href=\"https://github.com/haixuanTao\"\u003e\u003ccode\u003e@​haixuanTao\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1875\"\u003ehuggingface/tokenizers#1875\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate indicatif dependency by \u003ca href=\"https://github.com/gordonmessmer\"\u003e\u003ccode\u003e@​gordonmessmer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1867\"\u003ehuggingface/tokenizers#1867\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump node-forge from 1.3.1 to 1.3.2 in /tokenizers/examples/unstable_wasm/www 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/huggingface/tokenizers/pull/1889\"\u003ehuggingface/tokenizers#1889\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump js-yaml from 3.14.1 to 3.14.2 in /bindings/node 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/huggingface/tokenizers/pull/1892\"\u003ehuggingface/tokenizers#1892\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efix: used normalize_str in BaseTokenizer.normalize by \u003ca href=\"https://github.com/ishitab02\"\u003e\u003ccode\u003e@​ishitab02\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1884\"\u003ehuggingface/tokenizers#1884\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[MINOR:TYPO] Update mod.rs by \u003ca href=\"https://github.com/cakiki\"\u003e\u003ccode\u003e@​cakiki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1883\"\u003ehuggingface/tokenizers#1883\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove runtime stderr warning from Python bindings by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1898\"\u003ehuggingface/tokenizers#1898\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMark immutable pyclasses as frozen by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1861\"\u003ehuggingface/tokenizers#1861\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDOCS: add \u003ccode\u003eadd_prefix_space\u003c/code\u003e to \u003ccode\u003eprocessors.ByteLevel\u003c/code\u003e  by \u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1878\"\u003ehuggingface/tokenizers#1878\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump express from 4.21.2 to 4.22.1 in /tokenizers/examples/unstable_wasm/www 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/huggingface/tokenizers/pull/1903\"\u003ehuggingface/tokenizers#1903\u003c/a\u003e\u003c/p\u003e\n\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/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1869\"\u003ehuggingface/tokenizers#1869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haixuanTao\"\u003e\u003ccode\u003e@​haixuanTao\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1875\"\u003ehuggingface/tokenizers#1875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gordonmessmer\"\u003e\u003ccode\u003e@​gordonmessmer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1867\"\u003ehuggingface/tokenizers#1867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ishitab02\"\u003e\u003ccode\u003e@​ishitab02\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1884\"\u003ehuggingface/tokenizers#1884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1898\"\u003ehuggingface/tokenizers#1898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1861\"\u003ehuggingface/tokenizers#1861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1878\"\u003ehuggingface/tokenizers#1878\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.1...v0.22.2\"\u003ehttps://github.com/huggingface/tokenizers/compare/v0.22.1...v0.22.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/huggingface/tokenizers/commit/f383101a26663708484cac0727792aad74f78234\"\u003e\u003ccode\u003ef383101\u003c/code\u003e\u003c/a\u003e fix max build?\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/fb691515d02fe8ef47ae7fd6f3bd78f99e825457\"\u003e\u003ccode\u003efb69151\u003c/code\u003e\u003c/a\u003e Python release fix (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1905\"\u003e#1905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/6573f2c56172bac56f211e77934be3215adef2c2\"\u003e\u003ccode\u003e6573f2c\u003c/code\u003e\u003c/a\u003e add lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/1d9dbb82a3a448474aebb1b032ed4eff4e458694\"\u003e\u003ccode\u003e1d9dbb8\u003c/code\u003e\u003c/a\u003e push the release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/95504c029325a5156564d26e4966c189f6b5b426\"\u003e\u003ccode\u003e95504c0\u003c/code\u003e\u003c/a\u003e add .lock and v0.22.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/860474078263d719865e3813c7c35c5e240084dd\"\u003e\u003ccode\u003e8604740\u003c/code\u003e\u003c/a\u003e update stub for typing (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1896\"\u003e#1896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/a5e03bab570d0f82b7eceb1072ed13b506b8f1f6\"\u003e\u003ccode\u003ea5e03ba\u003c/code\u003e\u003c/a\u003e Bump express in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1903\"\u003e#1903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ebbc3c8da336265912f5b7195dea155c54c1dc2b\"\u003e\u003ccode\u003eebbc3c8\u003c/code\u003e\u003c/a\u003e bump PyO3 to 0.26 (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1901\"\u003e#1901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b83d7c986c1d885c4e412715dbb63a1efd0438e1\"\u003e\u003ccode\u003eb83d7c9\u003c/code\u003e\u003c/a\u003e DOCS: add \u003ccode\u003eadd_prefix_space\u003c/code\u003e to \u003ccode\u003eprocessors.ByteLevel\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1878\"\u003e#1878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/060786018e6c3903ccc3ae7ac35394daa6a1e070\"\u003e\u003ccode\u003e0607860\u003c/code\u003e\u003c/a\u003e Mark immutable pyclasses as frozen (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1861\"\u003e#1861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.1...v0.22.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp` from 3.13.2 to 3.13.5\nUpdates `uvicorn` from 0.31.1 to 0.39.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.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\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/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\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.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\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.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\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.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2658\"\u003eKludex/uvicorn#2658\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\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/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.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't include \u003ccode\u003ecwd()\u003c/code\u003e when non-empty \u003ccode\u003e--reload-dirs\u003c/code\u003e is passed (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2598\"\u003e#2598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply \u003ccode\u003eget_client_addr\u003c/code\u003e formatting to WebSocket logging (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2636\"\u003e#2636\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/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/69a6ae319801a5866ec07afdeb2ff3d912f4d3a0\"\u003e\u003ccode\u003e69a6ae3\u003c/code\u003e\u003c/a\u003e Improve typing in \u003ccode\u003etest_http.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2740\"\u003e#2740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3850ad6520cafb290bd4174fa9c4ca5d33440c82\"\u003e\u003ccode\u003e3850ad6\u003c/code\u003e\u003c/a\u003e Version 0.38.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9b3f17a549ec96f57bf4d975145fc58feefdd4e8\"\u003e\u003ccode\u003e9b3f17a\u003c/code\u003e\u003c/a\u003e Support Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.31.1...0.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvloop` from 0.21.0 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/uvloop/releases\"\u003euvloop's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.15 and 3.15t wheel builds and CI coverage (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/758\"\u003e#758\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/honglei\"\u003e\u003ccode\u003e@​honglei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in f7c05473)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for the \u003ccode\u003eeager_start\u003c/code\u003e keyword argument in create_task() (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/748\"\u003e#748\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/samypr100\"\u003e\u003ccode\u003e@​samypr100\u003c/code\u003e\u003c/a\u003e in 3cbb0956 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/746\"\u003e#746\u003c/a\u003e \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/718\"\u003e#718\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd thread name prefix to the default thread pool executor (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/636\"\u003e#636\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/inikolaev\"\u003e\u003ccode\u003e@​inikolaev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in 0582f946 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/562\"\u003e#562\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for special hostname \u003ccode\u003e\u0026lt;broadcast\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/592\"\u003e#592\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/jpbede\"\u003e\u003ccode\u003e@​jpbede\u003c/code\u003e\u003c/a\u003e in 3060cebc for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/540\"\u003e#540\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade libuv to v1.52.1 (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/753\"\u003e#753\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in e8efea40 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/752\"\u003e#752\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance by using Python C API to enter/exit context (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/627\"\u003e#627\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in 837ef22c)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance/latency of Transport.write (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/619\"\u003e#619\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in 1d9b6e0d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eReplace some SSL vectorcall with direct methods (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/626\"\u003e#626\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in 6a27cbe2)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize SSL buffered reads using C values (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/629\"\u003e#629\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in a308f75f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDetach socket on create_connection cancellation to prevent fd double-close (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/740\"\u003e#740\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/junjzhang\"\u003e\u003ccode\u003e@​junjzhang\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in dc680eb2 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/645\"\u003e#645\u003c/a\u003e \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/738\"\u003e#738\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eloop._ready_len\u003c/code\u003e in favor of \u003ccode\u003elen(loop._ready)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/721\"\u003e#721\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in 5910a183 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/720\"\u003e#720\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrefer inspect.iscoroutinefunction (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/705\"\u003e#705\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/MatthieuDartiailh\"\u003e\u003ccode\u003e@​MatthieuDartiailh\u003c/code\u003e\u003c/a\u003e in fd650276 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/703\"\u003e#703\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix context tests by explicitly yielding after run_in_executor (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/743\"\u003e#743\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/samypr100\"\u003e\u003ccode\u003e@​samypr100\u003c/code\u003e\u003c/a\u003e in 6cd24cbb)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix test_create_connection_open_con_addr with Python 3.13.9+ (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/713\"\u003e#713\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/shadchin\"\u003e\u003ccode\u003e@​shadchin\u003c/code\u003e\u003c/a\u003e in b93141a5 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/701\"\u003e#701\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip flaky test_cancel_post_init on asyncio 3.13+ (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/714\"\u003e#714\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/MagicStack/uvloop/commit/c5f7debaabe98bba70859aa0120db243775c255c\"\u003e\u003ccode\u003ec5f7deb\u003c/code\u003e\u003c/a\u003e uvloop 0.23.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/f7c054738fb773e37e11fd86befc12e9408c7cd9\"\u003e\u003ccode\u003ef7c0547\u003c/code\u003e\u003c/a\u003e Add Python 3.15 to CI and fix test issues (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/e8efea407c783b0d9ad6993cfe1e3a56d1b1dc2e\"\u003e\u003ccode\u003ee8efea4\u003c/code\u003e\u003c/a\u003e Upgrade libuv to v1.52.1 (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/3cbb09560ed1753089133a3925b130ec5e151826\"\u003e\u003ccode\u003e3cbb095\u003c/code\u003e\u003c/a\u003e feat: support eager_start kwarg (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/748\"\u003e#748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/0582f946aeca3a9e9af08c3abe7f812bdbc6f91d\"\u003e\u003ccode\u003e0582f94\u003c/code\u003e\u003c/a\u003e Add thread name prefix to the default thread pool executor (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/963a5f3e141446884fb408abb012d4de1238d06b\"\u003e\u003ccode\u003e963a5f3\u003c/code\u003e\u003c/a\u003e Support any number of flags in UVLOOP_OPT_CFLAGS (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/630\"\u003e#630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/173e88cfcdae8edc1763dd9915087f5136b568aa\"\u003e\u003ccode\u003e173e88c\u003c/code\u003e\u003c/a\u003e Get rid of wheel as a build dependency (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/696\"\u003e#696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/b74c2f1c934382924d4ded8e3d68457be1d27afb\"\u003e\u003ccode\u003eb74c2f1\u003c/code\u003e\u003c/a\u003e Update the example to work with 3.14 (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/710\"\u003e#710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/dc680eb20c526d8babacaf4751a12f51431ea246\"\u003e\u003ccode\u003edc680eb\u003c/code\u003e\u003c/a\u003e Detach socket on create_connection cancellation to prevent fd double-close (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/6cd24cbb84f31c47a0820320705f421e7f0defe0\"\u003e\u003ccode\u003e6cd24cb\u003c/code\u003e\u003c/a\u003e fix: explicit yield after run_in_executor as it was implicitly needed (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/743\"\u003e#743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/uvloop/compare/v0.21.0...v0.23.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.121.3 to 0.128.8\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.128.8\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix grammar in \u003ccode\u003edocs/en/docs/tutorial/first-steps.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14708\"\u003e#14708\u003c/a\u003e by \u003ca href=\"https://github.com/SanjanaS10\"\u003e\u003ccode\u003e@​SanjanaS10\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🔨 Tweak PDM hook script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14895\"\u003e#14895\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 build setup for \u003ccode\u003efastapi-slim\u003c/code\u003e, deprecate it, and make it only depend on \u003ccode\u003efastapi\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14894\"\u003e#14894\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.128.7\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Show a clear error on attempt to include router into itself. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14258\"\u003e#14258\u003c/a\u003e by \u003ca href=\"https://github.com/JavierSanchezCastro\"\u003e\u003ccode\u003e@​JavierSanchezCastro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Replace \u003ccode\u003edict\u003c/code\u003e by \u003ccode\u003eMapping\u003c/code\u003e on \u003ccode\u003eHTTPException.headers\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12997\"\u003e#12997\u003c/a\u003e by \u003ca href=\"https://github.com/rijenkii\"\u003e\u003ccode\u003e@​rijenkii\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♻️ Simplify reading files in memory, do it sequentially instead of (fake) parallel. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14884\"\u003e#14884\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📝 Use \u003ccode\u003edfn\u003c/code\u003e tag for definitions instead of \u003ccode\u003eabbr\u003c/code\u003e in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14744\"\u003e#14744\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✅ Tweak comment in test to reference PR. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14885\"\u003e#14885\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 LLM-prompt for \u003ccode\u003eabbr\u003c/code\u003e and \u003ccode\u003edfn\u003c/code\u003e tags. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14747\"\u003e#14747\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✅ Test order for the submitted byte Files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14828\"\u003e#14828\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Configure \u003ccode\u003etest\u003c/code\u003e workflow to run tests with \u003ccode\u003einline-snapshot=review\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14876\"\u003e#14876\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\u003ch2\u003e0.128.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eon_startup\u003c/code\u003e and \u003ccode\u003eon_shutdown\u003c/code\u003e parameters of \u003ccode\u003eAPIRouter\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14873\"\u003e#14873\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\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14843\"\u003e#14843\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Fix parameterized tests with snapshots. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14875\"\u003e#14875\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\u003ch2\u003e0.128.5\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor and simplify Pydantic v2 (and v1) compatibility internal utils. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14862\"\u003e#14862\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\u003eInternal\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/bdd20051c42d08762b2cdcc6571e4356014de572\"\u003e\u003ccode\u003ebdd2005\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1ed9bd49230b192bb531f4195d3d6a309261a777\"\u003e\u003ccode\u003e1ed9bd4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aac30fd7071d79798130137728aeb363c8c5f695\"\u003e\u003ccode\u003eaac30fd\u003c/code\u003e\u003c/a\u003e 🔨 Tweak PDM hook script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14895\"\u003e#14895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/417f1ee07825c6f4e983629bee6039857197112f\"\u003e\u003ccode\u003e417f1ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ffb8965260c71657f26644673f218b99b1315cc7\"\u003e\u003ccode\u003effb8965\u003c/code\u003e\u003c/a\u003e ♻️ Update build setup for \u003ccode\u003efastapi-slim\u003c/code\u003e, deprecate it, and make it only depe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/93fa935fb8ac1c40488da7bf9b134466588ffaee\"\u003e\u003ccode\u003e93fa935\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f0f3e7a113b7771388aef6d4a4cb863ce3890d9c\"\u003e\u003ccode\u003ef0f3e7a\u003c/code\u003e\u003c/a\u003e 📝 Fix grammar in \u003ccode\u003edocs/en/docs/tutorial/first-steps.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14708\"\u003e#14708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8f82c94de0ff641a239db59e58dfdc6010a4b26a\"\u003e\u003ccode\u003e8f82c94\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5bb3423205daf98f88f14d696d104fea2221028a\"\u003e\u003ccode\u003e5bb3423\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6ce5e3e961876c39d8a60a3a2cb4147a6748d116\"\u003e\u003ccode\u003e6ce5e3e\u003c/code\u003e\u003c/a\u003e ✅ Tweak comment in test to reference PR (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14885\"\u003e#14885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.121.3...0.128.8\"\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.4 to 3.11.5\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.11.5\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\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.11.5 - 2025-12-06\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\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/fb3eb1f729c7e7b019f780af5695722c99c7c695\"\u003e\u003ccode\u003efb3eb1f\u003c/code\u003e\u003c/a\u003e 3.11.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/52688e02c51c845cde24a46cd1011a6010d10eb8\"\u003e\u003ccode\u003e52688e0\u003c/code\u003e\u003c/a\u003e Record contributors in headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/dc083e87d5262e7dde3ba4b1d2a377b5b065a27c\"\u003e\u003ccode\u003edc083e8\u003c/code\u003e\u003c/a\u003e Further compatibility and build misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/18f0186d47fbadd53c9db4e39a442d5b04225418\"\u003e\u003ccode\u003e18f0186\u003c/code\u003e\u003c/a\u003e Compatibility and build misc\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.4...3.11.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apscheduler` from 3.11.1 to 3.11.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed sub-minute interval jobs stalling for the duration of a DST spring-forward gap when the scheduler was configured with a \u003ccode\u003eZoneInfo\u003c/code\u003e time zone, caused by the wakeup delay being computed from the naive wall-clock difference instead of the actual UTC difference (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1103\"\u003e#1103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed imported jobs missing their scheduler and job store links (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\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/agronholm/apscheduler/commit/4308ec95b94069f5dbdddb6c60fb792dfc8c40a4\"\u003e\u003ccode\u003e4308ec9\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ff68780d7f66fe0f505c3a32764005cd004996b9\"\u003e\u003ccode\u003eff68780\u003c/code\u003e\u003c/a\u003e Added a note about weekday numbers in CronTrigger.from_crontab()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/36936e904052e6bfbd03f83e17b03701b7a589fe\"\u003e\u003ccode\u003e36936e9\u003c/code\u003e\u003c/a\u003e Updated actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c0ff7e4ccfcc703db44a905b70c1d6568a6f81fa\"\u003e\u003ccode\u003ec0ff7e4\u003c/code\u003e\u003c/a\u003e Fixed Pyside6 tests failing on Python 3.9 and 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1b782c90edeac787deb3106fb3e5c775b3d6b0cd\"\u003e\u003ccode\u003e1b782c9\u003c/code\u003e\u003c/a\u003e Fixed fixture \u003ccode\u003ecoreapp\u003c/code\u003e not found\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/dc3dde4a34c021f215d120d88fe19ddc66bb8a66\"\u003e\u003ccode\u003edc3dde4\u003c/code\u003e\u003c/a\u003e Test against PySide6 on all Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/18a6f6b637e372730f6325786f97936e6eaa9f77\"\u003e\u003ccode\u003e18a6f6b\u003c/code\u003e\u003c/a\u003e Fixed imported jobs missing their scheduler and job store links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1693db4d8861bf941d299d79a586797ad0ac6467\"\u003e\u003ccode\u003e1693db4\u003c/code\u003e\u003c/a\u003e Fix interval jobs stalling across DST spring-forward with ZoneInfo (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0636bf4931fddb706b948b6781ebbd76058f1443\"\u003e\u003ccode\u003e0636bf4\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/3eb3de8115f1631dc5e2ecce7b00175d34ffbdf9\"\u003e\u003ccode\u003e3eb3de8\u003c/code\u003e\u003c/a\u003e Fixed bad use of pytest.raises()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.11.1...3.11.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-sso` from 0.16.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/releases\"\u003efastapi-sso's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.20.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/270\"\u003etomasvotava/fastapi-sso#270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 5 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/tomasvotava/fastapi-sso/pull/273\"\u003etomasvotava/fastapi-sso#273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add soundcloud provider by \u003ca href=\"https://github.com/john-9474\"\u003e\u003ccode\u003e@​john-9474\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/272\"\u003etomasvotava/fastapi-sso#272\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/john-9474\"\u003e\u003ccode\u003e@​john-9474\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/272\"\u003etomasvotava/fastapi-sso#272\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/compare/0.19.0...0.20.0\"\u003ehttps://github.com/tomasvotava/fastapi-sso/compare/0.19.0...0.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.19.0\u003c/h2\u003e\n\u003cp\u003e️⚠️ A critical OAuth login CSRF vulnerability caused by missing \u003ccode\u003estate\u003c/code\u003e validation was\nreported by \u003ca href=\"https://github.com/davidbors-snyk\"\u003e\u003ccode\u003e@​davidbors-snyk\u003c/code\u003e\u003c/a\u003e (Snyk Security Labs)\nin \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/266\"\u003e#266\u003c/a\u003e and has been resolved\nin version \u003ccode\u003e0.19.0\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eStarting with \u003ccode\u003efastapi-sso==1.0.0\u003c/code\u003e, OAuth \u003ccode\u003estate\u003c/code\u003e will be backed by a pluggable server-side store\n(in-memory by default, with support for external stores such as \u003ccode\u003eRedis\u003c/code\u003e).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the all group with 11 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/tomasvotava/fastapi-sso/pull/230\"\u003etomasvotava/fastapi-sso#230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/231\"\u003etomasvotava/fastapi-sso#231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 6 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/tomasvotava/fastapi-sso/pull/232\"\u003etomasvotava/fastapi-sso#232\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all 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/tomasvotava/fastapi-sso/pull/233\"\u003etomasvotava/fastapi-sso#233\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/234\"\u003etomasvotava/fastapi-sso#234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 2 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/tomasvotava/fastapi-sso/pull/235\"\u003etomasvotava/fastapi-sso#235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/237\"\u003etomasvotava/fastapi-sso#237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/239\"\u003etomasvotava/fastapi-sso#239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group across 1 directory 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/tomasvotava/fastapi-sso/pull/241\"\u003etomasvotava/fastapi-sso#241\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 5 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/tomasvotava/fastapi-sso/pull/242\"\u003etomasvotava/fastapi-sso#242\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 10 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/tomasvotava/fastapi-sso/pull/247\"\u003etomasvotava/fastapi-sso#247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/248\"\u003etomasvotava/fastapi-sso#248\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/251\"\u003etomasvotava/fastapi-sso#251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/252\"\u003etomasvotava/fastapi-sso#252\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 2 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/tomasvotava/fastapi-sso/pull/253\"\u003etomasvotava/fastapi-sso#253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 2 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/tomasvotava/fastapi-sso/pull/254\"\u003etomasvotava/fastapi-sso#254\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 12 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/tomasvotava/fastapi-sso/pull/259\"\u003etomasvotava/fastapi-sso#259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: enforce state validation by \u003ca href=\"https://github.com/davidbors-snyk\"\u003e\u003ccode\u003e@​davidbors-snyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/267\"\u003etomasvotava/fastapi-sso#267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 7 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/tomasvotava/fastapi-sso/pull/265\"\u003etomasvotava/fastapi-sso#265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/266\"\u003e#266\u003c/a\u003e): warn against using state as an arbitrary data transport by \u003ca href=\"https://github.com/tomasvotava\"\u003e\u003ccode\u003e@​tomasvotava\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/269\"\u003etomasvotava/fastapi-sso#269\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/davidbors-snyk\"\u003e\u003ccode\u003e@​davidbors-snyk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/267\"\u003etomasvotava/fastapi-sso#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/compare/0.18.0...0.19.0\"\u003ehttps://github.com/tomasvotava/fastapi-sso/compare/0.18.0...0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\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/tomasvotava/fastapi-sso/commit/60380bba7f8ef58c1226e5e9887a1b2cb377f0a6\"\u003e\u003ccode\u003e60380bb\u003c/code\u003e\u003c/a\u003e bump: =\u0026gt; v0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/33d64d002402324503e2924b4199129e7e5e76f7\"\u003e\u003ccode\u003e33d64d0\u003c/code\u003e\u003c/a\u003e feat: Add soundcloud provider (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/89a1d9a641e26821b27e54f7321345739b10f14c\"\u003e\u003ccode\u003e89a1d9a\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/273\"\u003e#273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/079dc22aa7a30f656b20aea62091fd89ebb8b8c8\"\u003e\u003ccode\u003e079dc22\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/0b6a2433e7ff259b2dd6a8c8b842aea3e15b0cf0\"\u003e\u003ccode\u003e0b6a243\u003c/code\u003e\u003c/a\u003e docs: fix security notice order\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/c905eafe2d6d7aab5d2b929e53ba98f238fdb21d\"\u003e\u003ccode\u003ec905eaf\u003c/code\u003e\u003c/a\u003e chore: 0.18.0 =\u0026gt; 0.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/94343bf276bed9df0ed0b11fe00661fc65ac57e0\"\u003e\u003ccode\u003e94343bf\u003c/code\u003e\u003c/a\u003e docs(\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/266\"\u003e#266\u003c/a\u003e): warn against using state as an arbitrary data transport (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/d057c1d4db151a180668a03784250315cdb0b1e9\"\u003e\u003ccode\u003ed057c1d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/265\"\u003e#265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/6117d1a5ad498ba57d671e8a059ebe20db5abe02\"\u003e\u003ccode\u003e6117d1a\u003c/code\u003e\u003c/a\u003e fix: enforce state validation (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/267\"\u003e#267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/da63c19bca7db0fe8a7e66d03fdf07154ec7182a\"\u003e\u003ccode\u003eda63c19\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 12 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/259\"\u003e#259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/compare/0.16.0...0.20.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.10.1 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\u003ch2\u003e2.15.0\u003c/h2\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/2.15.0/CHANGELOG.rst\"\u003e2.15.0 changelog\u003c/a\u003e for complete release details.\u003c/p\u003e\n\u003ch2\u003e2.14.0\u003c/h2\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/2.14.0/CHANGELOG.rst\"\u003e2.14.0 changelog\u003c/a\u003e for the complete release details and related security advisories.\u003c/p\u003e\n\u003ch2\u003e2.13.0\u003c/h2\u003e\n\u003ch1\u003ePyJWT 2.13.0 — Security Release\u003c/h1\u003e\n\u003cp\u003eThis release bundles five security fixes plus three additional hardening / spec-compliance changes. We recommend all users upgrade.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\"\u003e\u003ccode\u003eGHSA-xgmm-8j9v-c9wx\u003c/code\u003e\u003c/a\u003e — JWK JSON accepted as HMAC secret (algorithm confusion).\u003c/strong\u003e \u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e previously rejected PEM- and SSH-formatted asymmetric keys but did not catch a JWK passed as a raw JSON string. In a verifier configured with both symmetric and asymmetric algorithms in \u003ccode\u003ealgorithms=[…]\u003c/code\u003e and a raw-JSON JWK as the key, an attacker could forge HS256 tokens using the JWK text as the HMAC secret. The guard has been extended to reject any JWK-shaped JSON. \u003cem\u003eReported by \u003ca href=\"https://github.com/aradona91\"\u003e\u003ccode\u003e@​aradona91\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\"\u003e\u003ccode\u003eGHSA-jq35-7prp-9v3f\u003c/code\u003e\u003c/a\u003e — Algorithm allow-list bypass with \u003ccode\u003ePyJWK\u003c/code\u003e / \u003ccode\u003ePyJWKClient\u003c/code\u003e.\u003c/strong\u003e When verifying with a \u003ccode\u003ePyJWK\u003c/code\u003e, the caller's \u003ccode\u003ealgorithms=[…]\u003c/code\u003e allow-list was checked against the token header \u003ccode\u003ealg\u003c/code\u003e as a string only; actual verification used the algorithm bound to the \u003ccode\u003ePyJWK\u003c/code\u003e. An attacker who controlled a registered JWKS key could sign with one algorithm and advertise another on the header. PyJWT now requires the token header \u003ccode\u003ealg\u003c/code\u003e to match the \u003ccode\u003ePyJWK\u003c/code\u003e's algorithm before verification. \u003cem\u003eReported by \u003ca href=\"https://github.com/sushi-gif\"\u003e\u003ccode\u003e@​sushi-gif\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\"\u003e\u003ccode\u003eGHSA-w7vc-732c-9m39\u003c/code\u003e\u003c/a\u003e — DoS via base64 decode of unused payload segment when \u003ccode\u003eb64=false\u003c/code\u003e.\u003c/strong\u003e For detached-payload JWS (\u003ccode\u003eb64=false\u003c/code\u003e), the compact-form payload segment was base64-decoded before being discarded in favor of the caller-supplied \u003ccode\u003edetached_payload\u003c/code\u003e. An attacker could inflate the unused segment to force CPU + memory cost without holding a valid signature. The segment is now required to be empty per RFC 7515 Appendix F, and is no longer decoded. \u003cem\u003eReported by \u003ca href=\"https://github.com/thesmartshadow\"\u003e\u003ccode\u003e@​thesmartshadow\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\"\u003e\u003ccode\u003eGHSA-993g-76c3-p5m4\u003c/code\u003e\u003c/a\u003e — \u003ccode\u003ePyJWKClient\u003c/code\u003e accepts non-HTTP(S) URIs.\u003c/strong\u003e \u003ccode\u003ePyJWKClient.fetch_data\u003c/code\u003e passed its URI to \u003ccode\u003eurllib.request.urlopen\u003c/code\u003e, which by default also handles \u003ccode\u003efile://\u003c/code\u003e, \u003ccode\u003eftp://\u003c/code\u003e, and \u003ccode\u003edata:\u003c/code\u003e schemes. An application that fed an attacker-influenced URI into \u003ccode\u003ePyJWKClient\u003c/code\u003e could be coerced into reading local files or reaching other unintended schemes. \u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects any URI whose scheme isn't \u003ccode\u003ehttp\u003c/code\u003e or \u003ccode\u003ehttps\u003c/code\u003e. \u003cem\u003eReported by ...\n\n_Description has been truncated_","html_url":"https://github.com/executiveusa/pauli-comic-funnel/pull/662","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/executiveusa%2Fpauli-comic-funnel/issues/662","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/662/packages"},{"uuid":"5972924696","node_id":"PR_kwDOT4Kv0c8AAAABJ8H_iw","number":459,"state":"open","title":"chore(deps): bump fastapi from 0.143.3 to 0.150.0 in the python-nonmajor group across 1 directory","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-22T04:13:41.000Z","updated_at":"2026-10-23T04:14:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastapi","old_version":"0.143.3","new_version":"0.150.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":"the python-nonmajor group across 1 directory","ecosystem":"pip"},"body":"Bumps the python-nonmajor group with 1 update in the / directory: [fastapi](https://github.com/fastapi/fastapi).\n\nUpdates `fastapi` from 0.143.3 to 0.150.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.150.0\u003c/h2\u003e\n\u003cp\u003eWhen no file is selected, browsers submit a file part with an empty filename and empty content. FastAPI now treats this as missing: required file fields return a validation error, and fields with defaults or default factories use them. Unselected inputs are ignored in lists of files. Named zero-byte files are still accepted.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat unselected browser file inputs as missing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16534\"\u003e#16534\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.149.0\u003c/h2\u003e\n\u003cp\u003eBrowsers submit empty text inputs as empty strings (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e). FastAPI now treats empty scalar form values as missing in form models, matching individual \u003ccode\u003eForm\u003c/code\u003e parameters. Required fields return a validation error. Fields with defaults or default factories use them and remain unset in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eEmpty strings inside lists are preserved. Omitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e. JSON requests and direct Pydantic validation are unchanged.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat empty scalar values as missing in form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16529\"\u003e#16529\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.148.0\u003c/h2\u003e\n\u003cp\u003eDefaults for omitted \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, and \u003ccode\u003eForm\u003c/code\u003e parameters and model fields are no longer treated as user input. Defaults are not validated unless \u003ccode\u003evalidate_default=True\u003c/code\u003e is enabled. If you rely on validators running for omitted values, enable default validation with \u003ccode\u003eField(validate_default=True)\u003c/code\u003e for model fields or, for example, \u003ccode\u003eQuery(validate_default=True)\u003c/code\u003e for individual parameters. \u003ccode\u003eBody(validate_default=True)\u003c/code\u003e is now honored too.\u003c/p\u003e\n\u003cp\u003eFor parameter models, applying a default no longer marks a field as explicitly set, so \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e excludes it. Default factories run once, and validation errors no longer include injected defaults in \u003ccode\u003einput\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOmitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e and count as explicitly set.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix default handling for request parameters and models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16527\"\u003e#16527\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.147.0\u003c/h2\u003e\n\u003cp\u003eOmitted \u003ccode\u003ebool\u003c/code\u003e and \u003ccode\u003ebool | None\u003c/code\u003e form fields are now interpreted as \u003ccode\u003eFalse\u003c/code\u003e, matching unchecked HTML checkboxes. This applies to individual \u003ccode\u003eForm\u003c/code\u003e parameters and form models, including required fields and fields with defaults of \u003ccode\u003eTrue\u003c/code\u003e or \u003ccode\u003eNone\u003c/code\u003e. The inferred value is considered explicitly set, including in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eJSON requests and direct Pydantic validation are unchanged. See \u003ca href=\"https://fastapi.tiangolo.com/tutorial/request-forms/#boolean-form-fields\"\u003eBoolean Form Fields\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat omitted boolean form fields as False. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16523\"\u003e#16523\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Add tests for parameter defaults, nullability, and browser form behavior. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14829\"\u003e#14829\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\u003ch2\u003e0.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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.145.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\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/03002a00b48335fdd8159edb7920157b508d8c15\"\u003e\u003ccode\u003e03002a0\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.150.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16535\"\u003e#16535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2e13450ea624cafd69a528747d3b7272f2ab1c3d\"\u003e\u003ccode\u003e2e13450\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0890e2a32960bb5cc1cfb807dca3a5e10384ec9d\"\u003e\u003ccode\u003e0890e2a\u003c/code\u003e\u003c/a\u003e 🐛 Treat unselected browser file inputs as missing (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16534\"\u003e#16534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4001c90dad1924b6d10624c7523d7264f4bf9f97\"\u003e\u003ccode\u003e4001c90\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.149.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16531\"\u003e#16531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/47fee72b938a63480e040c4878211040c0ea57eb\"\u003e\u003ccode\u003e47fee72\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f214cd34627aa7cff092cb1b7b8f40589e97252a\"\u003e\u003ccode\u003ef214cd3\u003c/code\u003e\u003c/a\u003e 🐛 Treat empty scalar values as missing in form models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16529\"\u003e#16529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e5fc7ef524e3c23d84d55ffe0f64106de4b56326\"\u003e\u003ccode\u003ee5fc7ef\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.148.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16528\"\u003e#16528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f88a4775b94940a686270621bbdf5292052394d\"\u003e\u003ccode\u003e6f88a47\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/32240026ad8bdea0b78fd06ac607bba7e4d9da8a\"\u003e\u003ccode\u003e3224002\u003c/code\u003e\u003c/a\u003e 🐛 Fix default handling for request parameters and models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16527\"\u003e#16527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f63265848ef3caa5be5deba05ec6eabb169d9fb2\"\u003e\u003ccode\u003ef632658\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.147.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16524\"\u003e#16524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.3...0.150.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/sonoxo/gpt-doug-llm/pull/459","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonoxo%2Fgpt-doug-llm/issues/459","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/459/packages"},{"uuid":"5972877651","node_id":"PR_kwDOPuzaQs8AAAABJ8Fmhw","number":187,"state":"closed","title":"security(deps): bump fastapi from 0.141.1 to 0.146.0","user":"dependabot[bot]","labels":["security","dependencies","python"],"assignees":["arkalia-luna-system"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-23T04:09:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-22T04:08:46.000Z","updated_at":"2026-10-23T04:09:58.000Z","time_to_close":86470,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"security(deps)","packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.146.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.141.1 to 0.146.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.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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.145.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16518\"\u003e#16518\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📝 Document URL paths in templates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16517\"\u003e#16517\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.144.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add WebSocket support to security dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/10147\"\u003e#10147\u003c/a\u003e by \u003ca href=\"https://github.com/mnixry\"\u003e\u003ccode\u003e@​mnixry\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9383\"\u003e#9383\u003c/a\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.4\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add httpx2 to optional dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16512\"\u003e#16512\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \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\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/3070b5105fe02c4afdba5e3aea6c2cf2e3796c7f\"\u003e\u003ccode\u003e3070b51\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.146.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16521\"\u003e#16521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a17bd595ae17d5b8ec01f2acc291f36844d478fe\"\u003e\u003ccode\u003ea17bd59\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/45c419938435d668a85a2e81bb9ac41495f8a648\"\u003e\u003ccode\u003e45c4199\u003c/code\u003e\u003c/a\u003e 🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16520\"\u003e#16520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/129c9cfcd33c3ed4371c9674e724fd838a292e2b\"\u003e\u003ccode\u003e129c9cf\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.145.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16519\"\u003e#16519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/475b46638fd2ea6608f80418a6333a9107340e28\"\u003e\u003ccode\u003e475b466\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a37a162de602049ab65595a98d88a75996ee6814\"\u003e\u003ccode\u003ea37a162\u003c/code\u003e\u003c/a\u003e 🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16\"\u003e#16\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0ab3e037a6bd406ae8462841864b5c6337c8b329\"\u003e\u003ccode\u003e0ab3e03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f940b1b724626e74b944377051a801e0cd7686c\"\u003e\u003ccode\u003e4f940b1\u003c/code\u003e\u003c/a\u003e 📝 Document URL paths in templates (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16517\"\u003e#16517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9528746e3493a1cdd17da2eff97c48ef65290713\"\u003e\u003ccode\u003e9528746\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.144.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16516\"\u003e#16516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c18732cd43202c4cb310a8e6c1d75c2a6020294d\"\u003e\u003ccode\u003ec18732c\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.146.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=fastapi\u0026package-manager=pip\u0026previous-version=0.141.1\u0026new-version=0.146.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/arkalia-luna-system/arkalia-cia/pull/187","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkalia-luna-system%2Farkalia-cia/issues/187","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/187/packages"},{"uuid":"5971499475","node_id":"PR_kwDOVS6YRc8AAAABJ7Aalw","number":4,"state":"closed","title":"build(deps): Update fastapi requirement from \u003e=0.115 to \u003e=0.146.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-22T07:09:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-22T01:43:06.000Z","updated_at":"2026-10-22T07:09:32.000Z","time_to_close":19575,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Update","packages":[{"name":"fastapi","old_version":"\u003e=0.115","new_version":"\u003e=0.146.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/backend","ecosystem":"pip"},"body":"Updates the requirements on [fastapi](https://github.com/fastapi/fastapi) 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/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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/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/fastapi/fastapi/commit/3070b5105fe02c4afdba5e3aea6c2cf2e3796c7f\"\u003e\u003ccode\u003e3070b51\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.146.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16521\"\u003e#16521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a17bd595ae17d5b8ec01f2acc291f36844d478fe\"\u003e\u003ccode\u003ea17bd59\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/45c419938435d668a85a2e81bb9ac41495f8a648\"\u003e\u003ccode\u003e45c4199\u003c/code\u003e\u003c/a\u003e 🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16520\"\u003e#16520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/129c9cfcd33c3ed4371c9674e724fd838a292e2b\"\u003e\u003ccode\u003e129c9cf\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.145.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16519\"\u003e#16519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/475b46638fd2ea6608f80418a6333a9107340e28\"\u003e\u003ccode\u003e475b466\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a37a162de602049ab65595a98d88a75996ee6814\"\u003e\u003ccode\u003ea37a162\u003c/code\u003e\u003c/a\u003e 🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16\"\u003e#16\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0ab3e037a6bd406ae8462841864b5c6337c8b329\"\u003e\u003ccode\u003e0ab3e03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f940b1b724626e74b944377051a801e0cd7686c\"\u003e\u003ccode\u003e4f940b1\u003c/code\u003e\u003c/a\u003e 📝 Document URL paths in templates (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16517\"\u003e#16517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9528746e3493a1cdd17da2eff97c48ef65290713\"\u003e\u003ccode\u003e9528746\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.144.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16516\"\u003e#16516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c18732cd43202c4cb310a8e6c1d75c2a6020294d\"\u003e\u003ccode\u003ec18732c\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.146.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/Nikhil-creat/cloudpulse-ai/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nikhil-creat%2Fcloudpulse-ai/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"},{"uuid":"5958309641","node_id":"PR_kwDOUntQxM8AAAABJwamMA","number":272,"state":"open","title":"chore(deps): bump fastapi from 0.143.0 to 0.143.5 in /api","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":true,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-21T09:55:24.000Z","updated_at":"2026-10-21T09:55:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.5","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/api","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.143.5.\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.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9383\"\u003e#9383\u003c/a\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.4\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add httpx2 to optional dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16512\"\u003e#16512\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/4bf5ee9098d7b042afb54f452a92f0aabf6050be\"\u003e\u003ccode\u003e4bf5ee9\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.5 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16515\"\u003e#16515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6e9caf886612b05325488c1ba4e8a1a8daa229d6\"\u003e\u003ccode\u003e6e9caf8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fab6eeacae4a37d983f545f4cb3479f101942d58\"\u003e\u003ccode\u003efab6eea\u003c/code\u003e\u003c/a\u003e 🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/9383\"\u003e#9383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b23d78f2ce4e7b3ea48a59f51ca249690d9fd02c\"\u003e\u003ccode\u003eb23d78f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16513\"\u003e#16513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4c5dca92aa0a3462f7b5d21c3e483086e92982ed\"\u003e\u003ccode\u003e4c5dca9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5bebde9c30bab8c071a563f2058c2d7504cdeeea\"\u003e\u003ccode\u003e5bebde9\u003c/code\u003e\u003c/a\u003e ⬆️ Add httpx2 to optional dependencies (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16512\"\u003e#16512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\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.143.0...0.143.5\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.143.0\u0026new-version=0.143.5)](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/upayanmazumder/rankstack/pull/272","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/upayanmazumder%2Frankstack/issues/272","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/272/packages"},{"uuid":"5956613014","node_id":"PR_kwDOU0Rox88AAAABJvDm3w","number":14,"state":"open","title":"Bump fastapi from 0.143.0 to 0.143.3 in /backend","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-21T07:54:54.000Z","updated_at":"2026-10-21T07:55:59.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\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=fastapi\u0026package-manager=uv\u0026previous-version=0.143.0\u0026new-version=0.143.3)](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/kanat-m/informatics-research2/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanat-m%2Finformatics-research2/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"},{"uuid":"5956080873","node_id":"PR_kwDOKznBOM8AAAABJuoZLQ","number":14469,"state":"closed","title":"Bump the python group with 14 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-21T07:24:19.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-21T07:14:07.000Z","updated_at":"2026-10-21T07:24:29.000Z","time_to_close":612,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":14,"packages":[{"name":"typer","old_version":"0.27.1","new_version":"0.27.3","repository_url":"https://github.com/fastapi/typer"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.52.1","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"datasets","old_version":"4.3.0","new_version":"5.1.0","repository_url":"https://github.com/huggingface/datasets"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [typer](https://github.com/fastapi/typer), [huggingface-hub](https://github.com/huggingface/huggingface_hub), [fastapi](https://github.com/fastapi/fastapi), [uvicorn](https://github.com/Kludex/uvicorn), [pydantic](https://github.com/pydantic/pydantic), [datasets](https://github.com/huggingface/datasets), [ddgs](https://github.com/deedy5/ddgs), [cryptography](https://github.com/pyca/cryptography), pymupdf4llm, [transformers](https://github.com/huggingface/transformers), [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes), [torch](https://github.com/pytorch/pytorch), [torchvision](https://github.com/pytorch/vision) and [setuptools-scm](https://github.com/pypa/setuptools-scm) to permit the latest version.\nUpdates `typer` from 0.27.1 to 0.27.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/typer/releases\"\u003etyper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.27.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Escape terminal control characters in error messages. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1972\"\u003e#1972\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1969\"\u003e#1969\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 urllib3 from 2.7.0 to 2.8.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1968\"\u003e#1968\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 pymdown-extensions from 11.0 to 11.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1924\"\u003e#1924\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 7 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1966\"\u003e#1966\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 cryptography from 48.0.1 to 50.0.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1920\"\u003e#1920\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1967\"\u003e#1967\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1965\"\u003e#1965\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 anyio from 4.12.0 to 4.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1959\"\u003e#1959\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✅ Fix flaky \u003ccode\u003eapp_dir\u003c/code\u003e and \u003ccode\u003elaunch\u003c/code\u003e tutorial tests under \u003ccode\u003exdist\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1951\"\u003e#1951\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 8 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1948\"\u003e#1948\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/typer/pull/1949\"\u003e#1949\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1950\"\u003e#1950\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1947\"\u003e#1947\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.27.2\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Create \u003ccode\u003eexceptions\u003c/code\u003e module and \u003ccode\u003eTyperException\u003c/code\u003e base class. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1942\"\u003e#1942\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\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🐛 Fix showing \u003ccode\u003efast\u003c/code\u003e button as external link in animated terminals in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1912\"\u003e#1912\u003c/a\u003e by \u003ca href=\"https://github.com/phalberg\"\u003e\u003ccode\u003e@​phalberg\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⬆️ Bump setup-uv action to 10.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1940\"\u003e#1940\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👷 Migrate automatic labels to Latest Changes. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1931\"\u003e#1931\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👷 Remove legacy label check. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1930\"\u003e#1930\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 PR Submit for pull requests. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1928\"\u003e#1928\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 GitHub CLI for Git authentication. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1927\"\u003e#1927\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 PR Push commit identity. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1926\"\u003e#1926\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🔒 Replace pre-commit PAT with PR Push. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1923\"\u003e#1923\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👷 Remove Zensical docs cache. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1922\"\u003e#1922\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🔥 Remove the old Latest Changes workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1921\"\u003e#1921\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 the python-packages group with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1917\"\u003e#1917\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 pymdown-extensions from 10.21.3 to 11.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1910\"\u003e#1910\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 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1916\"\u003e#1916\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/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/fastapi/typer/blob/master/docs/release-notes.md\"\u003etyper's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.27.3 (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Escape terminal control characters in error messages. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1972\"\u003e#1972\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1969\"\u003e#1969\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 urllib3 from 2.7.0 to 2.8.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1968\"\u003e#1968\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 pymdown-extensions from 11.0 to 11.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1924\"\u003e#1924\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 7 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1966\"\u003e#1966\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 cryptography from 48.0.1 to 50.0.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1920\"\u003e#1920\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1967\"\u003e#1967\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1965\"\u003e#1965\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 anyio from 4.12.0 to 4.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1959\"\u003e#1959\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✅ Fix flaky \u003ccode\u003eapp_dir\u003c/code\u003e and \u003ccode\u003elaunch\u003c/code\u003e tutorial tests under \u003ccode\u003exdist\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1951\"\u003e#1951\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 8 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1948\"\u003e#1948\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/typer/pull/1949\"\u003e#1949\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1950\"\u003e#1950\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1947\"\u003e#1947\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.27.2 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Create \u003ccode\u003eexceptions\u003c/code\u003e module and \u003ccode\u003eTyperException\u003c/code\u003e base class. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1942\"\u003e#1942\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\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🐛 Fix showing \u003ccode\u003efast\u003c/code\u003e button as external link in animated terminals in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1912\"\u003e#1912\u003c/a\u003e by \u003ca href=\"https://github.com/phalberg\"\u003e\u003ccode\u003e@​phalberg\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⬆️ Bump setup-uv action to 10.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1940\"\u003e#1940\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👷 Migrate automatic labels to Latest Changes. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1931\"\u003e#1931\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👷 Remove legacy label check. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1930\"\u003e#1930\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 PR Submit for pull requests. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1928\"\u003e#1928\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 GitHub CLI for Git authentication. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1927\"\u003e#1927\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 PR Push commit identity. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1926\"\u003e#1926\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🔒 Replace pre-commit PAT with PR Push. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1923\"\u003e#1923\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👷 Remove Zensical docs cache. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1922\"\u003e#1922\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🔥 Remove the old Latest Changes workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1921\"\u003e#1921\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 the python-packages group with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1917\"\u003e#1917\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 pymdown-extensions from 10.21.3 to 11.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1910\"\u003e#1910\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 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1916\"\u003e#1916\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/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/fastapi/typer/commit/b15210b71a5b9b35be82a1ffdb172ef7b3a89d85\"\u003e\u003ccode\u003eb15210b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.27.3 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1973\"\u003e#1973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/8bfe6d1599d19fd2175722dc9b9cb576e331c43d\"\u003e\u003ccode\u003e8bfe6d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/a74010f845e8771e574cc9a033cd53f449383c61\"\u003e\u003ccode\u003ea74010f\u003c/code\u003e\u003c/a\u003e 🐛 Escape terminal control characters in error messages (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1972\"\u003e#1972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/11b083b92126fb8e149ab9e7d5c9a0f5594dfe58\"\u003e\u003ccode\u003e11b083b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/910a474f3071012c3c512aad3b6e10c6e9af9dcf\"\u003e\u003ccode\u003e910a474\u003c/code\u003e\u003c/a\u003e ⬆ Bump pyjwt from 2.13.0 to 2.15.0 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1969\"\u003e#1969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/33b1eec0e20df3695de0b4ad7af0dff89608b12b\"\u003e\u003ccode\u003e33b1eec\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/62f1d4acd95c52c12490d313d2dea27846d23f46\"\u003e\u003ccode\u003e62f1d4a\u003c/code\u003e\u003c/a\u003e ⬆ Bump urllib3 from 2.7.0 to 2.8.0 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1968\"\u003e#1968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/ffc8b9ae61d98fd48d52494e3f7286fda763fbe5\"\u003e\u003ccode\u003effc8b9a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/1b7ceee5da625df3c679a55f9e6d25e31ab5f5c2\"\u003e\u003ccode\u003e1b7ceee\u003c/code\u003e\u003c/a\u003e ⬆ Bump pymdown-extensions from 11.0 to 11.0.1 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1924\"\u003e#1924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/40c39c11ce29ea0272134a0a50b2668105cd714f\"\u003e\u003ccode\u003e40c39c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/typer/compare/0.27.1...0.27.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `huggingface-hub` 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 `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.52.1 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\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.1...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.4 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.4...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `datasets` from 4.3.0 to 5.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/datasets/releases\"\u003edatasets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0\u003c/h2\u003e\n\u003ch2\u003eNew Formats\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHarbor\u003c/strong\u003e ⚓: RL environments:\n\u003cul\u003e\n\u003cli\u003eAdd harbor benchmarks by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8729\"\u003ehuggingface/datasets#8729\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVortex\u003c/strong\u003e 🌀: High performance columnar data\n\u003cul\u003e\n\u003cli\u003eAdd support for datasets backed by vortex file format by \u003ca href=\"https://github.com/robert3005\"\u003e\u003ccode\u003e@​robert3005\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8502\"\u003ehuggingface/datasets#8502\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBio formats\u003c/strong\u003e 🧬: store biological data like DNA sequences, protein chains, and 3D molecular structures\n\u003cul\u003e\n\u003cli\u003efeat(fasta): add lightweight FASTA file format support by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7923\"\u003ehuggingface/datasets#7923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecode BioSequence and BioStructure records with universal newlines by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8600\"\u003ehuggingface/datasets#8600\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd lightweight FASTQ file format support by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7924\"\u003ehuggingface/datasets#7924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add GenBank file format support for biological sequence data by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7951\"\u003ehuggingface/datasets#7951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd lightweight PDB (Protein Data Bank) file support by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7926\"\u003ehuggingface/datasets#7926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add mmCIF file support for macromolecular structures by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7925\"\u003ehuggingface/datasets#7925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(features): add BioSequence and BioStructure decodable features by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8542\"\u003ehuggingface/datasets#8542\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDataset Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a strategy argument to split_dataset_by_node for iterable datasets by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8565\"\u003ehuggingface/datasets#8565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow IterableDataset.push_to_hub num_shards above dataset.num_shards by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8716\"\u003ehuggingface/datasets#8716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther improvements and bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix fixed size binary by \u003ca href=\"https://github.com/Alex-PLACET\"\u003e\u003ccode\u003e@​Alex-PLACET\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8281\"\u003ehuggingface/datasets#8281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix offline simulation with huggingface_hub 1.27 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/datasets/pull/8414\"\u003ehuggingface/datasets#8414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix info from data_dir/data_files or malformed yaml by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8462\"\u003ehuggingface/datasets#8462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eForward iter_arrow, is_typed and features from RepeatExamplesIterable by \u003ca href=\"https://github.com/ebarkhordar\"\u003e\u003ccode\u003e@​ebarkhordar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8395\"\u003ehuggingface/datasets#8395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix archive path check allowing sibling-directory escapes by \u003ca href=\"https://github.com/icn5381\"\u003e\u003ccode\u003e@​icn5381\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8490\"\u003ehuggingface/datasets#8490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edisallow hdf5 external links by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8523\"\u003ehuggingface/datasets#8523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edeepcopy\u003c/code\u003e bottleneck in state_dict() by \u003ca href=\"https://github.com/yuxin00j\"\u003e\u003ccode\u003e@​yuxin00j\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8387\"\u003ehuggingface/datasets#8387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize PyArrow block shuffling with dynamic rebatched chunk interleaving by \u003ca href=\"https://github.com/yuxin00j\"\u003e\u003ccode\u003e@​yuxin00j\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8407\"\u003ehuggingface/datasets#8407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pdf.decode_example raising TypeError on remote non-Hub paths by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8566\"\u003ehuggingface/datasets#8566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dead PDF processing link in README by \u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8512\"\u003ehuggingface/datasets#8512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eForward max_buffer_input_shards from IterableDatasetDict.shuffle by \u003ca href=\"https://github.com/vineethsaivs\"\u003e\u003ccode\u003e@​vineethsaivs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8594\"\u003ehuggingface/datasets#8594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve storage options across URL hops by \u003ca href=\"https://github.com/tandede\"\u003e\u003ccode\u003e@​tandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8496\"\u003ehuggingface/datasets#8496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter error when a column written as null gets values in a later batch by \u003ca href=\"https://github.com/ebarkhordar\"\u003e\u003ccode\u003e@​ebarkhordar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8591\"\u003ehuggingface/datasets#8591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdvance the user-supplied generator in Dataset.shuffle even on cache hits by \u003ca href=\"https://github.com/BenYang12\"\u003e\u003ccode\u003e@​BenYang12\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8589\"\u003ehuggingface/datasets#8589\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump fsspec upper bound to 2026.7.0 by \u003ca href=\"https://github.com/roshanjrajan\"\u003e\u003ccode\u003e@​roshanjrajan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8561\"\u003ehuggingface/datasets#8561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShard the sources when skipping a distributed IterableDataset by \u003ca href=\"https://github.com/ebarkhordar\"\u003e\u003ccode\u003e@​ebarkhordar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8569\"\u003ehuggingface/datasets#8569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix infinite repetition of empty iterable datasets by \u003ca href=\"https://github.com/Jokasa7\"\u003e\u003ccode\u003e@​Jokasa7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8577\"\u003ehuggingface/datasets#8577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject a non-callable generator in GeneratorConfig by \u003ca href=\"https://github.com/LeSingh1\"\u003e\u003ccode\u003e@​LeSingh1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8585\"\u003ehuggingface/datasets#8585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix async map checkpoint accounting across repeated resumes by \u003ca href=\"https://github.com/SBrouck\"\u003e\u003ccode\u003e@​SBrouck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8575\"\u003ehuggingface/datasets#8575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[httpx migration] Import httpx from huggingface_hub, require huggingface_hub\u0026gt;=1.31.0 by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8598\"\u003ehuggingface/datasets#8598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: enable Dependabot weekly GitHub Actions bumps by \u003ca href=\"https://github.com/hf-dependantbot-rollout\"\u003e\u003ccode\u003e@​hf-dependantbot-rollout\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8221\"\u003ehuggingface/datasets#8221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[docs] Fix legacy hf CLI references (datasets) by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8657\"\u003ehuggingface/datasets#8657\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eScope GITHUB_TOKEN permissions per job by \u003ca href=\"https://github.com/hf-s...\n\n_Description has been truncated_","html_url":"https://github.com/unslothai/unsloth/pull/14469","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/unslothai%2Funsloth/issues/14469","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14469/packages"},{"uuid":"5949764404","node_id":"PR_kwDOUdcCh88AAAABJpnriw","number":124,"state":"closed","title":"fix(deps): bump fastapi from 0.143.0 to 0.143.3","user":"dependabot[bot]","labels":["dependencies","released","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-20T21:15:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-20T21:14:31.000Z","updated_at":"2026-10-20T21:17:16.000Z","time_to_close":66,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"fix(deps)","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\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=fastapi\u0026package-manager=uv\u0026previous-version=0.143.0\u0026new-version=0.143.3)](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/lukislp/studylife-telegram/pull/124","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukislp%2Fstudylife-telegram/issues/124","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/124/packages"},{"uuid":"5944455776","node_id":"PR_kwDOUz2C688AAAABJlU_Pw","number":751,"state":"closed","title":"chore(deps): Bump the runtime-minor-patch group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-21T04:02:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-20T15:25:52.000Z","updated_at":"2026-10-21T04:02:52.000Z","time_to_close":45411,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"runtime-minor-patch","update_count":13,"packages":[{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"fastapi","old_version":"0.142.1","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"opentelemetry-api","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"playwright","old_version":"1.63.0","new_version":"1.64.0","repository_url":"https://github.com/microsoft/playwright-python"},{"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.19.0","new_version":"6.21.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"sqlalchemy","old_version":"2.1.1","new_version":"2.1.5","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"truststore","old_version":"0.10.4","new_version":"0.10.5","repository_url":"https://github.com/sethmlarson/truststore"},{"name":"tzdata","old_version":"2026.4","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-minor-patch group with 13 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| [fastapi](https://github.com/fastapi/fastapi) | `0.142.1` | `0.143.3` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.63.0` | `1.64.0` |\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.19.0` | `6.21.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.1.1` | `2.1.5` |\n| [starlette](https://github.com/Kludex/starlette) | `1.7.0` | `1.8.0` |\n| [truststore](https://github.com/sethmlarson/truststore) | `0.10.4` | `0.10.5` |\n| [tzdata](https://github.com/python/tzdata) | `2026.4` | `2026.5` |\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 `fastapi` from 0.142.1 to 0.143.3\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.142.1...0.143.3\"\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 `opentelemetry-api` from 1.45.0 to 1.45.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/releases\"\u003eopentelemetry-api's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.45.1/0.66b1\u003c/h2\u003e\n\u003cp\u003eThis is a patch release on the previous 1.45.0/0.66b0 release, fixing the issue(s) below.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: make \u003ccode\u003eAnyValue\u003c/code\u003e and \u003ccode\u003eAttributeValue\u003c/code\u003e explicit type aliases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5703\"\u003e#5703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix thread leak bug in resource initialization logic for long running resource detectors (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5706\"\u003e#5706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e: restore \u003ccode\u003erequests\u003c/code\u003e as the default HTTP transport so proxy environment variables such as \u003ccode\u003eHTTPS_PROXY\u003c/code\u003e are honored again (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5714\"\u003e#5714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: fix quadratic time parsing of the \u003ccode\u003etracestate\u003c/code\u003e header and discard \u003ccode\u003etracestate\u003c/code\u003e headers longer than 8192 characters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5746\"\u003e#5746\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/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.45.1/0.66b1 (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: make \u003ccode\u003eAnyValue\u003c/code\u003e and \u003ccode\u003eAttributeValue\u003c/code\u003e explicit type\naliases\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5703\"\u003e#5703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix thread leak bug in resource initialization logic for\nlong running resource detectors\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5706\"\u003e#5706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e: restore \u003ccode\u003erequests\u003c/code\u003e as the default\nHTTP transport so proxy environment variables such as \u003ccode\u003eHTTPS_PROXY\u003c/code\u003e are\nhonored again\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5714\"\u003e#5714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: fix quadratic time parsing of the \u003ccode\u003etracestate\u003c/code\u003e header\nand discard \u003ccode\u003etracestate\u003c/code\u003e headers longer than 8192 characters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5746\"\u003e#5746\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/open-telemetry/opentelemetry-python/commit/14971cef9c84c2354cbaf6871090896fad0f9a1a\"\u003e\u003ccode\u003e14971ce\u003c/code\u003e\u003c/a\u003e Prepare release 1.45.1/0.66b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5752\"\u003e#5752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/44ac26edcee5cc99e03a65d6a1a9978775703e28\"\u003e\u003ccode\u003e44ac26e\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix thread leak bug in resource initialization logic (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/570\"\u003e#570\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/a2ec3f91f1c2b735ccba177eaa77d6019a4428ae\"\u003e\u003ccode\u003ea2ec3f9\u003c/code\u003e\u003c/a\u003e [release/v1.45.x-0.66bx] opentelemetry-exporter-otlp-proto-http: restore requ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d5224bf4ffdf2aee1b592ad238dcc32ca957f26b\"\u003e\u003ccode\u003ed5224bf\u003c/code\u003e\u003c/a\u003e opentelemetry-api: improve performance of tracestate parsing (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5746\"\u003e#5746\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5749\"\u003e#5749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/db61173a56475d4fa1276d16182e46b43db83b9e\"\u003e\u003ccode\u003edb61173\u003c/code\u003e\u003c/a\u003e Declare AnyValue and AttributeValue as explicit type aliases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5703\"\u003e#5703\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5750\"\u003e#5750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.45.0...v1.45.1\"\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 `playwright` from 1.63.0 to 1.64.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/playwright-python/releases\"\u003eplaywright's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.64.0\u003c/h2\u003e\n\u003ch2\u003e🧰 WebMCP\u003c/h2\u003e\n\u003cp\u003eNew \u003ca href=\"https://playwright.dev/python/docs/api/class-page#page-webmcp\"\u003epage.webmcp\u003c/a\u003e and \u003ca href=\"https://playwright.dev/python/docs/api/class-frame#frame-webmcp\"\u003eframe.webmcp\u003c/a\u003e give access to the tools that a page registers through\nthe experimental \u003ca href=\"https://webmachinelearning.github.io/webmcp/\"\u003eWebMCP\u003c/a\u003e browser API, so you can test them like\nany other part of your app:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003ebrowser = chromium.launch(args=[\u0026quot;--enable-features=WebMCP\u0026quot;])\r\npage = browser.new_page()\r\npage.goto(\u0026quot;https://example.com\u0026quot;)\r\n\u003cp\u003efor tool in page.webmcp.tools():\nprint(tool[\u0026quot;name\u0026quot;], tool[\u0026quot;description\u0026quot;])\u003c/p\u003e\n\u003cp\u003eresult = page.webmcp.call_tool(\u0026quot;add\u0026quot;, {\u0026quot;a\u0026quot;: 2, \u0026quot;b\u0026quot;: 40})\nprint(result[\u0026quot;content\u0026quot;][0][\u0026quot;text\u0026quot;])  # \u0026quot;42\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://playwright.dev/python/docs/getting-started-mcp\"\u003ePlaywright MCP\u003c/a\u003e also supports WebMCP by default, with page-defined tools offered to the agent as \u003ccode\u003ewebmcp_\u0026lt;tool\u0026gt;\u003c/code\u003e. Pass \u003ccode\u003e--no-webmcp\u003c/code\u003e to opt out.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://playwright.dev/python/docs/getting-started-cli\"\u003e\u003ccode\u003eplaywright-cli\u003c/code\u003e\u003c/a\u003e exposes them as well:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eplaywright-cli webmcp-list\r\nplaywright-cli webmcp-call search_catalog --params '{\u0026quot;query\u0026quot;:\u0026quot;cats\u0026quot;}'\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003e🎬 Better videos\u003c/h2\u003e\n\u003cp\u003eVideos can now be recorded at a custom frame rate, and the decorations for actions are styled with plain CSS:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003epage.screencast.start(path=\u0026quot;video.webm\u0026quot;, size={\u0026quot;width\u0026quot;: 1920, \u0026quot;height\u0026quot;: 1080}, fps=60)\r\npage.screencast.show_actions(\r\n    style={\r\n        \u0026quot;point\u0026quot;: \u0026quot;width: 20px; height: 20px; border-radius: 50%; background: red\u0026quot;,\r\n        \u0026quot;highlight\u0026quot;: \u0026quot;outline: 2px solid [#333](https://github.com/microsoft/playwright-python/issues/333); background: rgba(0, 128, 255, .15)\u0026quot;,\r\n        \u0026quot;title\u0026quot;: \u0026quot;font-size: 16px\u0026quot;,\r\n    }\r\n)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ca href=\"https://playwright.dev/python/docs/api/class-browser#browser-new-context-option-record-video-fps\"\u003e\u003ccode\u003erecord_video_fps\u003c/code\u003e\u003c/a\u003e option and new \u003ca href=\"https://playwright.dev/python/docs/api/class-screencast#screencast-start-option-fps\"\u003e\u003ccode\u003efps\u003c/code\u003e\u003c/a\u003e option in\n\u003ca href=\"https://playwright.dev/python/docs/api/class-screencast#screencast-start\"\u003escreencast.start()\u003c/a\u003e. Firefox and WebKit currently capture up to 25 frames per second.\u003c/li\u003e\n\u003cli\u003eNew \u003ca href=\"https://playwright.dev/python/docs/api/class-screencast#screencast-show-actions-option-style\"\u003e\u003ccode\u003estyle\u003c/code\u003e\u003c/a\u003e option takes CSS declarations for the \u003ccode\u003epoint\u003c/code\u003e marker, the target\n\u003ccode\u003ehighlight\u003c/code\u003e and the action \u003ccode\u003etitle\u003c/code\u003e. It replaces the \u003ccode\u003efont_size\u003c/code\u003e option, which is now deprecated.\u003c/li\u003e\n\u003cli\u003eThe cursor stays visible at the last action point, survives navigations and travels along a natural, eased path.\u003c/li\u003e\n\u003cli\u003eVideos are encoded with VP9 instead of VP8, which takes less CPU and produces smaller files of the same or better\nquality.\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/microsoft/playwright-python/commit/387a8a943bb397962f19085c376a301b440029b6\"\u003e\u003ccode\u003e387a8a9\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3252\"\u003e#3252\u003c/a\u003e): devops: publish to PyPI from GitHub Actions with trusted ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/71d2a17728bac8599fbf858e3c3035798d0a6ed4\"\u003e\u003ccode\u003e71d2a17\u003c/code\u003e\u003c/a\u003e chore: roll Playwright to v1.64.0 (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3251\"\u003e#3251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/d566fc568706470588e6bf5f0c0bc9ae39f67f78\"\u003e\u003ccode\u003ed566fc5\u003c/code\u003e\u003c/a\u003e fix(fetch): JSON-stringify NaN and Infinity string data (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3249\"\u003e#3249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/2959d198e2bab16ecc150a9d6cba31310b58ef44\"\u003e\u003ccode\u003e2959d19\u003c/code\u003e\u003c/a\u003e docs(skills): add a skill to prepare a release (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/5313ac253a82cd7e5ff26a57cdb792593bd33e1e\"\u003e\u003ccode\u003e5313ac2\u003c/code\u003e\u003c/a\u003e fix(network): keep blank values in Request.post_data_json for form bodies (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/9d8c50fd869e1445b0b6dbe0a23705240e07fef3\"\u003e\u003ccode\u003e9d8c50f\u003c/code\u003e\u003c/a\u003e chore(codegen): use alphabetical order in the generated API (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3242\"\u003e#3242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/478282f8687f0c33edd170b02cf84d52ffc505a6\"\u003e\u003ccode\u003e478282f\u003c/code\u003e\u003c/a\u003e chore(codegen): generate the public TypedDicts from the docs (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3247\"\u003e#3247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/b8b7155220dc1eeed27de5d791ba918398220050\"\u003e\u003ccode\u003eb8b7155\u003c/code\u003e\u003c/a\u003e fix: raise Error instead of assert for user input validation (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3245\"\u003e#3245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/1de5d37f4c5b50a419d0c18dfd79a428aa016cf4\"\u003e\u003ccode\u003e1de5d37\u003c/code\u003e\u003c/a\u003e fix(network): do not add missing headers when looking them up (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3246\"\u003e#3246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/222a2e04679638e159ba82065614e3c61842c165\"\u003e\u003ccode\u003e222a2e0\u003c/code\u003e\u003c/a\u003e chore(codegen): type _impl_obj in the generated API (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3241\"\u003e#3241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/playwright-python/compare/v1.63.0...v1.64.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 `pydantic-core` from 2.46.5 to 2.50.1\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/core-v2.46.5...core-v2.50.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.19.0 to 6.21.1\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.21.1, 2026-10-17\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly open /DCTDecode image data with the Pillow JPEG plugin (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4222\"\u003e#4222\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\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.21.0...6.21.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\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\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e) by \u003ca href=\"https://github.com/JackyHsu-X\"\u003e\u003ccode\u003e@​JackyHsu-X\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\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e) by \u003ca href=\"https://github.com/Zephyr761\"\u003e\u003ccode\u003e@​Zephyr761\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e) by \u003ca href=\"https://github.com/tigger0jk\"\u003e\u003ccode\u003e@​tigger0jk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e) by \u003ca href=\"https://github.com/usmanmateen\"\u003e\u003ccode\u003e@​usmanmateen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.20.1, 2026-10-12\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent cyclic tree handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4188\"\u003e#4188\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\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly read the color operator from a text field's default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4158\"\u003e#4158\u003c/a\u003e) by \u003ca href=\"https://github.com/yaourtv\"\u003e\u003ccode\u003e@​yaourtv\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.0...6.20.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\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\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.21.1, 2026-10-17\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly open /DCTDecode image data with the Pillow JPEG plugin (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.21.0...6.21.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.20.1, 2026-10-12\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent cyclic tree handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly read the color operator from a text field's default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4158\"\u003e#4158\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.0...6.20.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.20.0, 2026-10-09\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)\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)\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)\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)\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)\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)\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)\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)\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/py-pdf/pypdf/commit/1a6de8d43c3a931b1ab3643c8dee2c9b51a32d42\"\u003e\u003ccode\u003e1a6de8d\u003c/code\u003e\u003c/a\u003e REL: 6.21.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/512d8eb94eb04be1d1c90504e6da2dcef8679e07\"\u003e\u003ccode\u003e512d8eb\u003c/code\u003e\u003c/a\u003e SEC: Only open /DCTDecode image data with the Pillow JPEG plugin (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/7abdc8efdc3b336c838857f0fce6dc67f2914b67\"\u003e\u003ccode\u003e7abdc8e\u003c/code\u003e\u003c/a\u003e DOC: Clarify security PR process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/1145329e8c80e1f72fbbb4001460fb8553236aeb\"\u003e\u003ccode\u003e1145329\u003c/code\u003e\u003c/a\u003e REL: 6.21.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/5ef728f0e16d225c853e89f861ba0a67402fe3f2\"\u003e\u003ccode\u003e5ef728f\u003c/code\u003e\u003c/a\u003e SEC: Improve performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/18bd2981a74479483a0b9507602c58a63d6c9b12\"\u003e\u003ccode\u003e18bd298\u003c/code\u003e\u003c/a\u003e SEC: Limit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9f861003511cc5d732d766bd4f6d3c864998e30b\"\u003e\u003ccode\u003e9f86100\u003c/code\u003e\u003c/a\u003e DEV: Ignore ruff rule ICN001 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4206\"\u003e#4206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/1d64c39ea5e7a02156a400961118e4605592fe14\"\u003e\u003ccode\u003e1d64c39\u003c/code\u003e\u003c/a\u003e ENH: Allow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/14ea59650c139f91912cdac37ef3c690a2ebcfde\"\u003e\u003ccode\u003e14ea596\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/download-artifact from 8.0.1 to 8.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4204\"\u003e#4204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c7c6d2aa0948d6d60b3c3a6512d808b02762d1ea\"\u003e\u003ccode\u003ec7c6d2a\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/upload-artifact from 7.0.1 to 7.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.19.0...6.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.1.1 to 2.1.5\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.5\u003c/h1\u003e\n\u003cp\u003eReleased: October 16, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [feature]\u003c/strong\u003e Added the \u003ccode\u003e_orm.Unmapped\u003c/code\u003e annotation and the\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct, providing a declarative-compatible\napproach to having \u0026quot;excluded\u0026quot; columns in a Declarative model, that is,\ncolumns that are part of the \u003ccode\u003e_schema.Table\u003c/code\u003e but are not mapped,\nreplacing the use of \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e for this\npurpose when using a Declarative mapping.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\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/11917\"\u003e#11917\u003c/a\u003e in version 2.0.36 where an ORM\nenabled \u003ccode\u003e_sql.update()\u003c/code\u003e using WHERE criteria which matched more than\none object present in the \u003ccode\u003e_orm.Session\u003c/code\u003e would expire server-side\nonupdate columns, as well as columns that were SET to a SQL expression, on\nonly one of the matched objects, leaving the remaining objects with stale\nvalues for those attributes. The columns are now expired for all matched\nobjects.\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/13675\"\u003e#13675\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [deprecated]\u003c/strong\u003e Using the \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e or\n\u003ccode\u003e_orm.Mapper.include_properties\u003c/code\u003e parameters on a Declarative\nmapping to exclude attributes that are declared on the class, such as with\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, is deprecated and now emits a deprecation\nwarning.  This use was never supported, and depending on the arguments\npassed to \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, the attribute could remain mapped\nregardless; in particular, as of 2.1 this includes ORM mapped dataclasses\nwhere \u003ccode\u003e_orm.mapped_column.default\u003c/code\u003e is present.  The new\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct should be used instead.  Excluding\ncolumns that are present only in the \u003ccode\u003e_schema.Table\u003c/code\u003e, such as those\nfrom \u003ccode\u003e__table__\u003c/code\u003e, \u003ccode\u003e__table_args__\u003c/code\u003e or table reflection, is not\naffected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eschema\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[schema] [bug]\u003c/strong\u003e Fixed issue where dialect-specific keyword arguments established on a\n\u003ccode\u003eForeignKeyConstraint\u003c/code\u003e, \u003ccode\u003eForeignKey\u003c/code\u003e or\n\u003ccode\u003eCheckConstraint\u003c/code\u003e, such as \u003ccode\u003epostgresql_not_valid\u003c/code\u003e, were not\ncarried along to the copy of the constraint produced by\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 `starlette` from 1.7.0 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/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.8.0\u003c/h2\u003e\n\u003cp\u003eThis release adds HTTP 103 Early Hints, preserves response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e, and stops \u003ccode\u003eFileResponse\u003c/code\u003e transfers when clients disconnect. Starlette now requires Python 3.11.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.response.start\u003c/code\u003e immediately in \u003ccode\u003eGZipMiddleware\u003c/code\u003e for responses with an existing \u003ccode\u003eContent-Encoding\u003c/code\u003e, status \u003ccode\u003e206\u003c/code\u003e, or an excluded content type, instead of waiting for the first body chunk \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3631\"\u003e#3631\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eResolve the multipart charset once per request instead of once per field \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3618\"\u003e#3618\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop \u003ccode\u003eFileResponse\u003c/code\u003e transfers when the client disconnects \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3523\"\u003e#3523\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop multipart range responses when the file ends before a range is complete, instead of looping forever \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3583\"\u003e#3583\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eRange\u003c/code\u003e when \u003ccode\u003eIf-Range\u003c/code\u003e contains a weak ETag \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3567\"\u003e#3567\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eAllow: GET, HEAD\u003c/code\u003e in \u003ccode\u003eStaticFiles\u003c/code\u003e \u003ccode\u003e405\u003c/code\u003e responses \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3640\"\u003e#3640\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eClose \u003ccode\u003eRequest.stream()\u003c/code\u003e generators deterministically, avoiding \u0026quot;Exception ignored\u0026quot; errors with stacked \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3628\"\u003e#3628\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eVary: Cookie\u003c/code\u003e when \u003ccode\u003eSession.pop()\u003c/code\u003e removes an existing key \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3186\"\u003e#3186\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003eMax-Age=0\u003c/code\u003e on the session cookie when \u003ccode\u003eSessionMiddleware\u003c/code\u003e uses \u003ccode\u003emax_age=0\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3651\"\u003e#3651\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3617\"\u003e#3617\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/starlette/compare/1.7.0...1.8.0\"\u003e1.7.0...1.8.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/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.8.0 (October 13, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release drops Python 3.10 support and adds HTTP 103 Early Hints.\u003c/p\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.respon...\n\n_Description has been truncated_","html_url":"https://github.com/MulattoTech/MJobs/pull/751","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MulattoTech%2FMJobs/issues/751","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/751/packages"},{"uuid":"5941849941","node_id":"PR_kwDOUzksb88AAAABJjPplQ","number":7,"state":"open","title":"Bump fastapi from 0.142.0 to 0.143.3 in /examples/e2e-paid-api","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-20T12:44:20.000Z","updated_at":"2026-10-20T12:44:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.142.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/examples/e2e-paid-api","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.142.0 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.142.0...0.143.3\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.142.0\u0026new-version=0.143.3)](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\n\n\u003c!-- This is an auto-generated description by cubic. --\u003e\n---\n## Summary by cubic\nUpdates FastAPI from 0.142.0 to 0.143.3 in the `examples/e2e-paid-api` example.\n\nIncludes fixes for non-finite float serialization in JSONL and SSE streams, blocking frontend fallback file checks, and included route metadata.\n\n**Breaking Changes**\n- Automatic OpenTelemetry exporter setup is now opt-in. To keep the previous behavior, set `FASTAPI_OTEL_AUTO_CONFIGURE=true` or use `FastAPI(telemetry={\"auto_configure\": True})`.\n\n\u003csup\u003eWritten for commit 24fc480ac2a01d41c48f6a8e9aaf0d3e7984ad2a. Summary will update on new commits.\u003c/sup\u003e\n\n\u003ca href=\"https://cubic.dev/pr/PhucNguyen-Dev/back-end-skills/pull/7?utm_source=github\" target=\"_blank\" rel=\"noopener noreferrer\" data-no-image-dialog=\"true\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://www.cubic.dev/buttons/review-in-cubic-dark.svg\"\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://www.cubic.dev/buttons/review-in-cubic-light.svg\"\u003e\u003cimg alt=\"View guided diff\" src=\"https://www.cubic.dev/buttons/review-in-cubic-light.svg\"\u003e\u003c/picture\u003e\u003c/a\u003e \u003ca href=\"https://www.cubic.dev/action/auto-fix/pr/PhucNguyen-Dev/back-end-skills/7?returnTo=https%3A%2F%2Fgithub.com%2FPhucNguyen-Dev%2Fback-end-skills%2Fpull%2F7\u0026source=description\" target=\"_blank\" rel=\"noopener noreferrer\" data-no-image-dialog=\"true\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://www.cubic.dev/buttons/turn-on-auto-fix-dark.svg\"\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg\"\u003e\u003cimg alt=\"Turn on auto-fix\" src=\"https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg\"\u003e\u003c/picture\u003e\u003c/a\u003e\n\n\u003c!-- End of auto-generated description by cubic. --\u003e\n\n","html_url":"https://github.com/PhucNguyen-Dev/back-end-skills/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhucNguyen-Dev%2Fback-end-skills/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"5939046427","node_id":"PR_kwDOT1iSxs8AAAABJhA3xg","number":11,"state":"open","title":"build(deps): bump fastapi from 0.141.1 to 0.143.3","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-20T09:08:58.000Z","updated_at":"2026-10-20T09:09:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.141.1 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\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.3\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.141.1\u0026new-version=0.143.3)](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/Cougar/OmaTasku/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cougar%2FOmaTasku/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"5933913356","node_id":"PR_kwDOSy85b88AAAABJdAhYA","number":127,"state":"closed","title":"Bump the pip-minor-patch group in /service with 7 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-22T00:06:05.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-20T00:44:26.000Z","updated_at":"2026-10-22T00:06:33.000Z","time_to_close":170499,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-minor-patch","update_count":7,"packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.5","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pydantic-settings","old_version":"2.15.0","new_version":"2.16.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"google-genai","old_version":"2.30.1","new_version":"2.31.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"anthropic","old_version":"1.13.0","new_version":"1.15.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"pypdf","old_version":"6.20.1","new_version":"6.21.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"pypdfium2","old_version":"5.13.0","new_version":"5.14.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"}],"path":"/service","ecosystem":"pip"},"body":"Bumps the pip-minor-patch group in /service with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.143.0` | `0.143.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.54` | `2.1.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.15.0` | `2.16.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.30.1` | `2.31.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `1.13.0` | `1.15.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.20.1` | `6.21.0` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.13.0` | `5.14.0` |\n\nUpdates `fastapi` from 0.143.0 to 0.143.3\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\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.54 to 2.1.5\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.5\u003c/h1\u003e\n\u003cp\u003eReleased: October 16, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [feature]\u003c/strong\u003e Added the \u003ccode\u003e_orm.Unmapped\u003c/code\u003e annotation and the\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct, providing a declarative-compatible\napproach to having \u0026quot;excluded\u0026quot; columns in a Declarative model, that is,\ncolumns that are part of the \u003ccode\u003e_schema.Table\u003c/code\u003e but are not mapped,\nreplacing the use of \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e for this\npurpose when using a Declarative mapping.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\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/11917\"\u003e#11917\u003c/a\u003e in version 2.0.36 where an ORM\nenabled \u003ccode\u003e_sql.update()\u003c/code\u003e using WHERE criteria which matched more than\none object present in the \u003ccode\u003e_orm.Session\u003c/code\u003e would expire server-side\nonupdate columns, as well as columns that were SET to a SQL expression, on\nonly one of the matched objects, leaving the remaining objects with stale\nvalues for those attributes. The columns are now expired for all matched\nobjects.\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/13675\"\u003e#13675\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [deprecated]\u003c/strong\u003e Using the \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e or\n\u003ccode\u003e_orm.Mapper.include_properties\u003c/code\u003e parameters on a Declarative\nmapping to exclude attributes that are declared on the class, such as with\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, is deprecated and now emits a deprecation\nwarning.  This use was never supported, and depending on the arguments\npassed to \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, the attribute could remain mapped\nregardless; in particular, as of 2.1 this includes ORM mapped dataclasses\nwhere \u003ccode\u003e_orm.mapped_column.default\u003c/code\u003e is present.  The new\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct should be used instead.  Excluding\ncolumns that are present only in the \u003ccode\u003e_schema.Table\u003c/code\u003e, such as those\nfrom \u003ccode\u003e__table__\u003c/code\u003e, \u003ccode\u003e__table_args__\u003c/code\u003e or table reflection, is not\naffected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eschema\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[schema] [bug]\u003c/strong\u003e Fixed issue where dialect-specific keyword arguments established on a\n\u003ccode\u003eForeignKeyConstraint\u003c/code\u003e, \u003ccode\u003eForeignKey\u003c/code\u003e or\n\u003ccode\u003eCheckConstraint\u003c/code\u003e, such as \u003ccode\u003epostgresql_not_valid\u003c/code\u003e, were not\ncarried along to the copy of the constraint produced by\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 `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 `google-genai` from 2.30.1 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\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/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\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/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\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.1...v2.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 1.13.0 to 1.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add between_tools to thinking types in model capabilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add the speed parameter and usage.speed to Messages\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e return a Console organization's usage-tier spend cap as a read-only spend limit\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e speed up breaking change detection\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e describe headers on Managed Agents and telemetry endpoints\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify the script that formats code blocks in docs\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e cover OpenTelemetry options and method default timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e note that some models need a beta header to use speed\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.14.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add execution_identity to Managed Agents agents\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add organization_type_not_supported error to spend limit lists\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destination test endpoint\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destinations to the Admin API\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add native support for OpenTelemetry tracing\u003c/p\u003e\n\u003cp\u003eIf your app registers a global tracer provider, the SDK will create spans with it after upgrading, and they'll be exported with the rest of your traces. Requests will also get trace context headers from the global propagator. To disable, pass \u003ccode\u003eopen_telemetry=False\u003c/code\u003e to the client or set \u003ccode\u003eANTHROPIC_OPEN_TELEMETRY=false\u003c/code\u003e. Learn more in the \u003ca href=\"https://platform.claude.com/docs/en/manage-claude/opentelemetry/sdk\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e rename telemetry destination test response model\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e close dropped streams without waiting for the collector\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e pass unknown event types through the message stream helpers\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e stop raising \u0026quot;Unexpected event order\u0026quot; for an event before message_start\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e correct prefill, thinking, fallback and model descriptions\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e document the scope required to assign the managed role\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update model examples\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e narrow the tripwire test rule in the contributor guides\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.14.0...v1.15.0\"\u003e1.15.0\u003c/a\u003e (2026-10-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add between_tools to thinking types in model capabilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add the speed parameter and usage.speed to Messages\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e return a Console organization's usage-tier spend cap as a read-only spend limit\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e speed up breaking change detection\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e describe headers on Managed Agents and telemetry endpoints\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify the script that formats code blocks in docs\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e cover OpenTelemetry options and method default timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e note that some models need a beta header to use speed\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.13.0...v1.14.0\"\u003e1.14.0\u003c/a\u003e (2026-10-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add execution_identity to Managed Agents agents\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add organization_type_not_supported error to spend limit lists\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destination test endpoint\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destinations to the Admin API\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add native support for OpenTelemetry tracing\u003c/p\u003e\n\u003cp\u003eIf your app registers a global tracer provider, the SDK will create spans with it after upgrading, and they'll be exported with the rest of your traces. Requests will also get trace context headers from the global propagator. To disable, pass \u003ccode\u003eopen_telemetry=False\u003c/code\u003e to the client or set \u003ccode\u003eANTHROPIC_OPEN_TELEMETRY=false\u003c/code\u003e. Learn more in the \u003ca href=\"https://platform.claude.com/docs/en/manage-claude/opentelemetry/sdk\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e rename telemetry destination test response model\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e close dropped streams without waiting for the collector\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e pass unknown event types through the message stream helpers\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e stop raising \u0026quot;Unexpected event order\u0026quot; for an event before message_start\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e correct prefill, thinking, fallback and model descriptions\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e document the scope required to assign the managed role\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update model examples\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e narrow the tripwire test rule in the contributor guides\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/anthropics/anthropic-sdk-python/commit/bcd55fe1d3f0f1240765f8cef04295b67337f55a\"\u003e\u003ccode\u003ebcd55fe\u003c/code\u003e\u003c/a\u003e release: 1.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/69743442287cc974aa9ff94d982f2c313f88edd2\"\u003e\u003ccode\u003e6974344\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1021\"\u003e#1021\u003c/a\u003e from anthropics/synced/published\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/80404f64daa02dac4f75bf658c490dcae86f3910\"\u003e\u003ccode\u003e80404f6\u003c/code\u003e\u003c/a\u003e chore(tests): cover OpenTelemetry options and method default timeouts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ef9133691b1eb0c0dc82c91398300e1a7b602674\"\u003e\u003ccode\u003eef91336\u003c/code\u003e\u003c/a\u003e feat(helpers): retry a rate-limited fast fallback at standard speed (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9ace6c5c771031812b91b4f2e539aa1e72448769\"\u003e\u003ccode\u003e9ace6c5\u003c/code\u003e\u003c/a\u003e feat(api): add between_tools to thinking types in model capabilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d44d21886402b894a3698defeaa89ea1455a845d\"\u003e\u003ccode\u003ed44d218\u003c/code\u003e\u003c/a\u003e chore(docs): describe headers on Managed Agents and telemetry endpoints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ef59b87af236955e0dc47e0a95eb74b092944089\"\u003e\u003ccode\u003eef59b87\u003c/code\u003e\u003c/a\u003e docs(api): note that some models need a beta header to use speed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c10fe778731adce8f584ef888b4bba3a04913d62\"\u003e\u003ccode\u003ec10fe77\u003c/code\u003e\u003c/a\u003e docs(changelog): shorten the OpenTelemetry tracing note (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5b187415d6426bae8a76a76e46934418d85e3e71\"\u003e\u003ccode\u003e5b18741\u003c/code\u003e\u003c/a\u003e chore(internal): simplify the script that formats code blocks in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f0e30dcc1740e121bcd08dff3341bfbd0e4f9fb0\"\u003e\u003ccode\u003ef0e30dc\u003c/code\u003e\u003c/a\u003e feat(api): add the speed parameter and usage.speed to Messages\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.13.0...v1.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.20.1 to 6.21.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.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\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\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e) by \u003ca href=\"https://github.com/JackyHsu-X\"\u003e\u003ccode\u003e@​JackyHsu-X\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\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e) by \u003ca href=\"https://github.com/Zephyr761\"\u003e\u003ccode\u003e@​Zephyr761\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e) by \u003ca href=\"https://github.com/tigger0jk\"\u003e\u003ccode\u003e@​tigger0jk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e) by \u003ca href=\"https://github.com/usmanmateen\"\u003e\u003ccode\u003e@​usmanmateen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\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/py-pdf/pypdf/commit/1145329e8c80e1f72fbbb4001460fb8553236aeb\"\u003e\u003ccode\u003e1145329\u003c/code\u003e\u003c/a\u003e REL: 6.21.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/5ef728f0e16d225c853e89f861ba0a67402fe3f2\"\u003e\u003ccode\u003e5ef728f\u003c/code\u003e\u003c/a\u003e SEC: Improve performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/18bd2981a74479483a0b9507602c58a63d6c9b12\"\u003e\u003ccode\u003e18bd298\u003c/code\u003e\u003c/a\u003e SEC: Limit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9f861003511cc5d732d766bd4f6d3c864998e30b\"\u003e\u003ccode\u003e9f86100\u003c/code\u003e\u003c/a\u003e DEV: Ignore ruff rule ICN001 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4206\"\u003e#4206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/1d64c39ea5e7a02156a400961118e4605592fe14\"\u003e\u003ccode\u003e1d64c39\u003c/code\u003e\u003c/a\u003e ENH: Allow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/14ea59650c139f91912cdac37ef3c690a2ebcfde\"\u003e\u003ccode\u003e14ea596\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/download-artifact from 8.0.1 to 8.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4204\"\u003e#4204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c7c6d2aa0948d6d60b3c3a6512d808b02762d1ea\"\u003e\u003ccode\u003ec7c6d2a\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/upload-artifact from 7.0.1 to 7.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/f2f158a2b051818f4981b34ff15d1ca67b324611\"\u003e\u003ccode\u003ef2f158a\u003c/code\u003e\u003c/a\u003e BUG: Treat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4a296e43c59fde5efeafc2d057581155d9558268\"\u003e\u003ccode\u003e4a296e4\u003c/code\u003e\u003c/a\u003e BUG: Avoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/b29ac76fcd890db1b2f1ba5f387241a776520b1b\"\u003e\u003ccode\u003eb29ac76\u003c/code\u003e\u003c/a\u003e MAINT: Reduce Ruff maximum configuration values (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4194\"\u003e#4194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.13.0 to 5.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/releases\"\u003epypdfium2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.14.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.14.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cp\u003e\u003cem\u003eRuntime\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePdfDocument.get_identifier()\u003c/code\u003e: Fix a blunder that caused one byte too much to be chopped off.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePdfDocument\u003c/code\u003e and \u003ccode\u003ePdfImage.load_jpeg()\u003c/code\u003e: With byte stream input, in the \u003ccode\u003e_buffer_reader\u003c/code\u003e callback, check that the number of bytes read into the buffer is no less than the buffer's size, otherwise indicate error.\n\u003ccode\u003e@Stjorn\u003c/code\u003e filed a security ticket that triggered this change; however we consider this more of a theoretical safety \u003cem\u003eenhancement\u003c/em\u003e and not actually a vulnerability, since under valid cirucmstances we do not envisage a situation where \u003ccode\u003ereadinto()\u003c/code\u003e would fall short on data. \u003ca href=\"https://vulnbrocards.com/brocards/vb002-no-exploit-from-heavens/\"\u003eNo exploit from the heavens.\u003c/a\u003e Updated documentation.\n(With older versions of pypdfium2, consider wrapping buffer input so that \u003ccode\u003ereadinto()\u003c/code\u003e raises an exception if it could not consume enough data to fill the buffer.)\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003ePdfBitmap\u003c/code\u003e, unconditionally call \u003ccode\u003eFPDFBitmap_Destroy()\u003c/code\u003e when the bitmap is closed/finalized, i.e. including bitmaps created from a native, pdfium-external buffer (the default). The API does not affect external buffers, but assumably should still be called to release the \u003ccode\u003eFPDF_BITMAP\u003c/code\u003e shell itself.\u003c/li\u003e\n\u003cli\u003eOn foreign bitmaps, \u003ccode\u003ePdfBitmap.close()\u003c/code\u003e now warns about being a potentially unsafe operation, since it frees the C-side buffer. Set \u003ccode\u003e.warn_on_close = False\u003c/code\u003e to silence the warning, if you have made sure your usage is safe.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eAutoCloseable\u003c/code\u003e, avoid assigning \u003ccode\u003eself\u003c/code\u003e to an instance attribute. This should result in improved GC behavior. Many thanks to James Barlow for pointing this out.\u003c/li\u003e\n\u003cli\u003eAdded bindings to some new PDFium APIs, along with CLI integration:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePdfAttachment\u003c/code\u003e: \u003ccode\u003e.{get,set}_desc()\u003c/code\u003e to read/write attachment descriptions, and \u003ccode\u003e.get_subtype()\u003c/code\u003e to obtain the MIME type.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePdfBookmark.get_style()\u003c/code\u003e and \u003ccode\u003ePdfBookmarkStyle\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eBuilds\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild scripts \u0026amp; CI: Updated PDFium pin from \u003ccode\u003e7913\u003c/code\u003e to \u003ccode\u003e8076\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eUpdated \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.3\u003c/code\u003e to \u003ccode\u003e2540.0\u003c/code\u003e (the \u003ccode\u003e2501\u003c/code\u003e build passed unused by pypdfium2).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePyodide: Patch freetype load flags to avoid \u003ccode\u003eFT_Load_Glyph()\u003c/code\u003e somehow corrupting the heap. It seems that this addresses the previously encountered crashes/freezes; however, the exact cause remains elusive. Anyway, many thanks to Hood Chatham for this finding.\n\u003cul\u003e\n\u003cli\u003eDropped debug symbols. Enabled PyPI upload. Updated documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eSetup\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRefactored ctypesgen integration. It is now cloned into pypdfium2's source tree and bundled in sdists. This avoids having an external git URL in pyproject setup dependencies that defeats the idea of a hermetic (self-contained) package index. ctypesgen's own setup and versioning code has been removed, owing to the project's special status as setup-only dependency with a head-to-head development model that allows for a constantly evolving API. See the \u003ca href=\"https://github.com/pypdfium2-team/ctypesgen/blob/acf905804b2ae50d2b230308e1ca62875f4fe16c/README.md#installation\"\u003eupdated pypdfium2-ctypesgen \u003ccode\u003eREADME.md\u003c/code\u003e\u003c/a\u003e for integration instructions. This also made Python 3.6 compatibility straightforward to restore after all, aligning to a common baseline with pypdfium2 and gn-dist.\u003c/li\u003e\n\u003cli\u003eDropped module splitting (\u003ccode\u003ePYPDFIUM_MODULES={raw,helpers}\u003c/code\u003e) and the \u003ccode\u003esystem-generate\u003c/code\u003e target, which had been introduced for pypdfium2's own conda packaging (see below).\u003c!-- raw HTML omitted --\u003e\nWe recognize that module splitting may still be desirable in some downstream packaging contexts; however, the dynamic implementation had been standing in the way of a proper \u003ccode\u003epyproject.toml\u003c/code\u003e migration, since the \u003ccode\u003e[project]\u003c/code\u003e table does not allow for \u003ccode\u003ename\u003c/code\u003e to be specified dynamically. This means we could not retain a first-party dynamic setting much longer without impairing the project's progress. Instead we suggest that you simply patch the project name / module include rules (possibly via some kind of automation) if module splitting is needed. This change does not affect the module layout in \u003ccode\u003esrc/\u003c/code\u003e which upholds the logical separation.\u003c/li\u003e\n\u003cli\u003eLowered iOS min version from \u003ccode\u003e26_0\u003c/code\u003e to \u003ccode\u003e17_0\u003c/code\u003e thanks to an upstream contribution. (We have not released any iOS wheels yet, but it is handled in setup.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eConda\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eRemoved pypdfium2's own conda packaging (\u003ccode\u003epypdfium2-team\u003c/code\u003e channel), following \u003ca href=\"https://github.com/mindee/doctr/discussions/2127\"\u003ethorough\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mindee/doctr/issues/113#issuecomment-5340008535\"\u003econsideration\u003c/a\u003e.\nUpstream \u003ccode\u003epdfium-binaries\u003c/code\u003e (\u003ccode\u003ebblanchon\u003c/code\u003e channel) followed suit and removed conda packaging as well, since pypdfium2 was the only known dependent.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eKey reasons include that it ended up covering far less platforms than we do with PyPI wheels, did not integrate with our own build strategies, and seemed fraught with workarounds.\nIn part, this has been a result of outsourcing the pdfium dependency (which seemed about the only viable option prior to \u003ca href=\"https://github.com/conda/ceps/blob/main/cep-0020.md\"\u003eCEP 20\u003c/a\u003e), along with other limitations, like conda generally supporting less platforms, and tight storage limits at \u003ccode\u003eanaconda.org\u003c/code\u003e that leave maintainers with tradeoffs between release frequency and platform inclusion vs. sustainability.\nThere is no fallback setup, either, which even seems to be an intentional limitation of conda's.\u003c/li\u003e\n\u003cli\u003eTo add to that, builds in a custom channel are inaccessible to dependents within the main anaconda/conda-forge ecosystems themselves, and generally a pain to manage, which resulted in negligible demand compared to PyPI. In short, the problems are manifold and technical debt is not far off.\u003c/li\u003e\n\u003cli\u003eThis means conda is effectively a third-party package environment similar to nixpkgs or Linux distribution packaging, unlike PyPI, which is a first-party package index where upstream authors publish directly. Conda build tools did not feel like being conceived for in-project packaging, either (the contrast to PyPA build backends is quite stark).\nOverall, there has been an unjustifably high complexity and amount of workarounds in relation to the low or nonexistent benefit.\u003c/li\u003e\n\u003cli\u003eTo be clear, any builds of pypdfium2 in conda-forge or anaconda/main are \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2#unofficial-packages\"\u003eunofficial (third-party)\u003c/a\u003e. We generally do not recommend using third-party distributions of pypdfium2, and their varying maintainership is a potential concern as well. Anyway, we cannot support what we don't maintain.\u003c/li\u003e\n\u003cli\u003eInstead, we want to highlight that you can just install pypdfium2 from PyPI even in a conda env. There are no mandatory runtime dependencies, so the usual reasons against mixing in PyPI packages do not apply.\u003c/li\u003e\n\u003cli\u003e\u003cem\u003eMaintainer's note: If upstream ever (drastically) improve integration with custom channels to allow for meaningful first-party publishing, the door remains ajar to redo pypdfium2's conda packaging the CEP 20 way.\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBuild info\u003c/h3\u003e\n\u003cp\u003eThis release was made with the following build strategies:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePBIN: \u003ccode\u003e[macosx_arm64, macosx_x86_64, win_amd64, win_arm64, win32, manylinux_x86_64, manylinux_i686, manylinux_aarch64, manylinux_armv7l, manylinux_ppc64le, manylinux_mips64le, manylinux_mipsle, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCIBW: \u003ccode\u003e[manylinux_riscv64, manylinux_loongarch64, manylinux_s390x, musllinux_x86_64, musllinux_aarch64, musllinux_armv7l, musllinux_i686, musllinux_ppc64le, musllinux_s390x, musllinux_riscv64, musllinux_loongarch64, pyodide_wasm32]\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/pypdfium2-team/pypdfium2/commit/21f85e273036f3bade4f67d896e1d05927e5f4b1\"\u003e\u003ccode\u003e21f85e2\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/1a9a921f26e2bf4c10754f3efb5172d6a77d43c1\"\u003e\u003ccode\u003e1a9a921\u003c/code\u003e\u003c/a\u003e Code style: change some \u003ccode\u003evar == 0\u003c/code\u003e checks to \u003ccode\u003enot var\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/46be6578997119ca06ec6b3e07cda2a0aba57e8e\"\u003e\u003ccode\u003e46be657\u003c/code\u003e\u003c/a\u003e PdfImage.extract(): improve implementation's code style\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b2d146c20337339a440d8668a5c7056e3b48e1dc\"\u003e\u003ccode\u003eb2d146c\u003c/code\u003e\u003c/a\u003e PdfDocument.get_identifier() fix: avoid chopping off a byte too much\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/e856c86af6363f9326f8b7ab07a808ff6b68d7cc\"\u003e\u003ccode\u003ee856c86\u003c/code\u003e\u003c/a\u003e Add an errcheck to \u003ccode\u003ePdfAttachment.get_name()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/080d459a4536540fa65b13431dac3f1fa81001b6\"\u003e\u003ccode\u003e080d459\u003c/code\u003e\u003c/a\u003e sbuild: fix macOS wheel tag (version)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3859503f346f3498aa0fe27c1fe8ef5883817e50\"\u003e\u003ccode\u003e3859503\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.14.0b1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/35304ab21576f896bef78738ad856ff7d9b037a2\"\u003e\u003ccode\u003e35304ab\u003c/code\u003e\u003c/a\u003e Prepare for a beta release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/f9859d3dc5b4ef1db28314dfb24737fb9b3eb58a\"\u003e\u003ccode\u003ef9859d3\u003c/code\u003e\u003c/a\u003e cli/toc: drop now-unnecessary pdfium version check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/d7ab55ea770a02ba3eeae066f10c32fc5865a262\"\u003e\u003ccode\u003ed7ab55e\u003c/code\u003e\u003c/a\u003e Fix weird changelog wording\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.13.0...5.14.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 \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/Syracuse3DPrintingOrg/PantryRaider/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Syracuse3DPrintingOrg%2FPantryRaider/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"},{"uuid":"5924599981","node_id":"PR_kwDOSlKuJc8AAAABJVkLHQ","number":232,"state":"open","title":"chore(deps): bump fastapi from 0.136.3 to 0.143.3","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-19T13:17:41.000Z","updated_at":"2026-10-21T04:14:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.136.3 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.3...0.143.3\"\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/mostlycopypaste/stoa/pull/232","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mostlycopypaste%2Fstoa/issues/232","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/232/packages"}],"issue_packages":[{"old_version":"0.143.1","new_version":"0.157.0","update_type":"minor","path":null,"pr_created_at":"2026-10-24T15:23:20.000Z","version_change":"0.143.1 → 0.157.0","issue":{"uuid":"6014495101","node_id":"PR_kwDOS_JvSM8AAAABKdKv3w","number":147,"state":"open","title":"build(deps): bump fastapi from 0.143.1 to 0.157.0","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-24T15:23:20.000Z","updated_at":"2026-10-24T15:23:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"fastapi","old_version":"0.143.1","new_version":"0.157.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.1 to 0.157.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.157.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for combining query, header, and cookie parameter models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16573\"\u003e#16573\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📝 Clarify boolean query parameter parsing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16569\"\u003e#16569\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📝 Clarify nullable query parameters and path parameter defaults. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16568\"\u003e#16568\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Remove translation notifications and approval labeling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16570\"\u003e#16570\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.156.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve uploaded file positions when converting to \u003ccode\u003ebytes\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16566\"\u003e#16566\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.156.7\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error locations for form and file \u003ccode\u003eAliasChoices\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16564\"\u003e#16564\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.156.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Respect model alias settings for query, header, and cookie parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16562\"\u003e#16562\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.156.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for path parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16560\"\u003e#16560\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.156.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for named JSON body parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16559\"\u003e#16559\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🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e extraction for form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16557\"\u003e#16557\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.156.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for query parameters, headers, and cookies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16555\"\u003e#16555\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.156.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata in inferred request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16553\"\u003e#16553\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/386a28af2f87af1a32ac26d88f07b7f58ab2dfb1\"\u003e\u003ccode\u003e386a28a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.157.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16574\"\u003e#16574\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d6ccf110319e8a450308a84f63b379f95bed619a\"\u003e\u003ccode\u003ed6ccf11\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/578af61e04e045321e5ec04653a646375c86b34f\"\u003e\u003ccode\u003e578af61\u003c/code\u003e\u003c/a\u003e ✨ Add support for combining query, header, and cookie parameter models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16573\"\u003e#16573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e865cc74fb98376f7e024bda6a9c0a82fff30614\"\u003e\u003ccode\u003ee865cc7\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8972a2d1638ef1ee800579938f57cc005393cab2\"\u003e\u003ccode\u003e8972a2d\u003c/code\u003e\u003c/a\u003e 👷 Remove translation notifications and approval labeling (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16570\"\u003e#16570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/624ec316850e3ff7252dd1bba76ef2eb9c5d2ab1\"\u003e\u003ccode\u003e624ec31\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f23cd4f095676af2d17681ab447fb014802dd869\"\u003e\u003ccode\u003ef23cd4f\u003c/code\u003e\u003c/a\u003e 📝 Clarify boolean query parameter parsing (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16569\"\u003e#16569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5c3e3d47abe649136a51f0cfc6353c5bdb5425e5\"\u003e\u003ccode\u003e5c3e3d4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f75181e4adc3946b3270c8ad453400e8e90fed5d\"\u003e\u003ccode\u003ef75181e\u003c/code\u003e\u003c/a\u003e 📝 Clarify nullable query parameters and path parameter defaults (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16568\"\u003e#16568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/de3e9af164bd2bf7a03be440baab4b4ded246cfc\"\u003e\u003ccode\u003ede3e9af\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16567\"\u003e#16567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.1...0.157.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=fastapi\u0026package-manager=uv\u0026previous-version=0.143.1\u0026new-version=0.157.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/gryphus-lab/swiss-tts-engine/pull/147","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gryphus-lab%2Fswiss-tts-engine/issues/147","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/147/packages"}},{"old_version":"0.115.6","new_version":"0.156.8","update_type":"minor","path":null,"pr_created_at":"2026-10-24T09:04:00.000Z","version_change":"0.115.6 → 0.156.8","issue":{"uuid":"6011301605","node_id":"PR_kwDOTe-dks8AAAABKauPVg","number":167,"state":"open","title":"Bump fastapi from 0.115.6 to 0.156.8","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-24T09:04:00.000Z","updated_at":"2026-10-24T09:05:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.115.6","new_version":"0.156.8","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.6 to 0.156.8.\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.156.8\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve uploaded file positions when converting to \u003ccode\u003ebytes\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16566\"\u003e#16566\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.156.7\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix validation error locations for form and file \u003ccode\u003eAliasChoices\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16564\"\u003e#16564\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.156.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Respect model alias settings for query, header, and cookie parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16562\"\u003e#16562\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.156.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for path parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16560\"\u003e#16560\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.156.4\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for named JSON body parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16559\"\u003e#16559\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🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e extraction for form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16557\"\u003e#16557\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.156.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eAliasChoices\u003c/code\u003e for query parameters, headers, and cookies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16555\"\u003e#16555\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.156.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata in inferred request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16553\"\u003e#16553\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.156.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata when request options are omitted. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16549\"\u003e#16549\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.156.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic \u003ccode\u003eField()\u003c/code\u003e attributes in request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16547\"\u003e#16547\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.155.0\u003c/h2\u003e\n\u003cp\u003eThe deprecated \u003ccode\u003e**extra\u003c/code\u003e keyword arguments have been removed from \u003ccode\u003ePath\u003c/code\u003e, \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, \u003ccode\u003eBody\u003c/code\u003e, \u003ccode\u003eForm\u003c/code\u003e, and \u003ccode\u003eFile\u003c/code\u003e. Unknown keyword arguments now raise \u003ccode\u003eTypeError\u003c/code\u003e. For additional JSON Schema properties, replace, for example, \u003ccode\u003eQuery(custom=\u0026quot;value\u0026quot;)\u003c/code\u003e with \u003ccode\u003eQuery(json_schema_extra={\u0026quot;custom\u0026quot;: \u0026quot;value\u0026quot;})\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\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/de3e9af164bd2bf7a03be440baab4b4ded246cfc\"\u003e\u003ccode\u003ede3e9af\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16567\"\u003e#16567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2ddeff9647578c5f210a8cce2a0d310d1f88dfdb\"\u003e\u003ccode\u003e2ddeff9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b47e166dd56023e65812de7904416794b8fdfc8d\"\u003e\u003ccode\u003eb47e166\u003c/code\u003e\u003c/a\u003e 🐛 Preserve uploaded file positions when converting to \u003ccode\u003ebytes\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16566\"\u003e#16566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7417100c8a543ee926c3d2ee7b9c0fdbbc1fa045\"\u003e\u003ccode\u003e7417100\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.7 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16565\"\u003e#16565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5ef4bf6e1de0e541d8e6e663ad4a9d205926c662\"\u003e\u003ccode\u003e5ef4bf6\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1282e9a9f1ac0647cb2031c6dd9c1d5631ade4d4\"\u003e\u003ccode\u003e1282e9a\u003c/code\u003e\u003c/a\u003e 🐛 Fix validation error locations for form and file \u003ccode\u003eAliasChoices\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16564\"\u003e#16564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b39c91cd1f221042313634db901c64615bb4fb5\"\u003e\u003ccode\u003e3b39c91\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16563\"\u003e#16563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0aa92bf26705cfd997c78c13eb045c2e1e615f7c\"\u003e\u003ccode\u003e0aa92bf\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bd4d5705d573c8c59c37b46b313a1849229176fe\"\u003e\u003ccode\u003ebd4d570\u003c/code\u003e\u003c/a\u003e 🐛 Respect model alias settings for query, header, and cookie parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16562\"\u003e#16562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/43f46fb14feeee78f4077a55eb3f95f792b7cd9d\"\u003e\u003ccode\u003e43f46fb\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.5 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16561\"\u003e#16561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.115.6...0.156.8\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.115.6\u0026new-version=0.156.8)](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/diaoyunxi/https-smb-server/pull/167","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/diaoyunxi%2Fhttps-smb-server/issues/167","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/167/packages"}},{"old_version":"0.142.4","new_version":"0.156.2","update_type":"minor","path":"/harvey-worker","pr_created_at":"2026-10-23T20:55:17.000Z","version_change":"0.142.4 → 0.156.2","issue":{"uuid":"6005314454","node_id":"PR_kwDOVIN4Ps8AAAABKWBRqw","number":129,"state":"open","title":"Bump fastapi from 0.142.4 to 0.156.2 in /harvey-worker","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":12,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-23T20:55:17.000Z","updated_at":"2026-10-23T20:59:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.142.4","new_version":"0.156.2","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/harvey-worker","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.142.4 to 0.156.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.156.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata in inferred request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16553\"\u003e#16553\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.156.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic field metadata when request options are omitted. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16549\"\u003e#16549\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.156.0\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Preserve Pydantic \u003ccode\u003eField()\u003c/code\u003e attributes in request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16547\"\u003e#16547\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.155.0\u003c/h2\u003e\n\u003cp\u003eThe deprecated \u003ccode\u003e**extra\u003c/code\u003e keyword arguments have been removed from \u003ccode\u003ePath\u003c/code\u003e, \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, \u003ccode\u003eBody\u003c/code\u003e, \u003ccode\u003eForm\u003c/code\u003e, and \u003ccode\u003eFile\u003c/code\u003e. Unknown keyword arguments now raise \u003ccode\u003eTypeError\u003c/code\u003e. For additional JSON Schema properties, replace, for example, \u003ccode\u003eQuery(custom=\u0026quot;value\u0026quot;)\u003c/code\u003e with \u003ccode\u003eQuery(json_schema_extra={\u0026quot;custom\u0026quot;: \u0026quot;value\u0026quot;})\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove deprecated \u003ccode\u003e**extra\u003c/code\u003e from request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16545\"\u003e#16545\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.154.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add Pydantic validation options to request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16542\"\u003e#16542\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.153.0\u003c/h2\u003e\n\u003cp\u003eUnions of form models now apply the same browser form handling as individual models. Empty scalar fields use defaults or produce missing-field errors, empty list items are preserved, omitted boolean fields become \u003ccode\u003eFalse\u003c/code\u003e, and unselected files are treated as missing. JSON request bodies are unchanged.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Apply browser form handling to unions of Pydantic models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16540\"\u003e#16540\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.152.0\u003c/h2\u003e\n\u003cp\u003eValidation errors for header parameter models now report the HTTP header name, such as \u003ccode\u003eint-val\u003c/code\u003e, instead of the Python field name, \u003ccode\u003eint_val\u003c/code\u003e. Explicit aliases, \u003ccode\u003eHeader(convert_underscores=False)\u003c/code\u003e, and Pydantic models with \u003ccode\u003eloc_by_alias=False\u003c/code\u003e keep their existing behavior.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix header model validation errors to report HTTP header names. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16538\"\u003e#16538\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.151.0\u003c/h2\u003e\n\u003cp\u003eJSON request bodies now distinguish an explicit \u003ccode\u003enull\u003c/code\u003e from an omitted value. For individual \u003ccode\u003eBody\u003c/code\u003e parameters, \u003ccode\u003enull\u003c/code\u003e is validated as \u003ccode\u003eNone\u003c/code\u003e: nullable types accept it, and non-nullable types reject it even when a default is defined. Defaults and default factories apply only when the value is omitted. This applies both to parameters inside JSON objects and to parameters representing the entire body. Clients that used \u003ccode\u003enull\u003c/code\u003e to request a default should omit the value instead.\u003c/p\u003e\n\u003cp\u003eWhen a JSON object is expected because of \u003ccode\u003eBody(embed=True)\u003c/code\u003e or multiple body parameters, sending \u003ccode\u003enull\u003c/code\u003e as the entire body now returns a validation error.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Distinguish JSON null from omitted body values. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16536\"\u003e#16536\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/44cc7420b798b70b406516f5f0abf039f99edbe3\"\u003e\u003ccode\u003e44cc742\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16554\"\u003e#16554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/952db907f0f0811572d4d1bfb9adc0e53a545b60\"\u003e\u003ccode\u003e952db90\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f5a439d59b263a7d88b2b5c46a3e8e26862a4eb8\"\u003e\u003ccode\u003ef5a439d\u003c/code\u003e\u003c/a\u003e 🐛 Preserve Pydantic field metadata in inferred request parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16553\"\u003e#16553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6ce798fa2d51d0f477b99cf40fda6f97cff7a2e\"\u003e\u003ccode\u003ef6ce798\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16550\"\u003e#16550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2d144cbedb7448f4fd42d0e1e9b0887b7acdfc7b\"\u003e\u003ccode\u003e2d144cb\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0a8c3fae5495a2b4d62e5d83cb63d4087fb7e63e\"\u003e\u003ccode\u003e0a8c3fa\u003c/code\u003e\u003c/a\u003e 🐛 Preserve Pydantic field metadata when request options are omitted (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16549\"\u003e#16549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/51f1a6c10086bd39b1623581b5683b2165cfcf24\"\u003e\u003ccode\u003e51f1a6c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.156.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16548\"\u003e#16548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f054b4570e799605b8aa0c4340ae3c30dddb26e\"\u003e\u003ccode\u003e6f054b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f8cba1038d0c6ff2e56888830bc535f0c4e62d00\"\u003e\u003ccode\u003ef8cba10\u003c/code\u003e\u003c/a\u003e 🐛 Preserve Pydantic \u003ccode\u003eField()\u003c/code\u003e attributes in request parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16547\"\u003e#16547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d76f69b2f8d194c189b174cf9595db798ccbe4d1\"\u003e\u003ccode\u003ed76f69b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.155.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16546\"\u003e#16546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.142.4...0.156.2\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.142.4\u0026new-version=0.156.2)](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/maazxhasan-hue/Tradinglab03-/pull/129","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/maazxhasan-hue%2FTradinglab03-/issues/129","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/129/packages"}},{"old_version":"0.143.0","new_version":"0.143.3","update_type":"patch","path":null,"pr_created_at":"2026-10-23T20:42:52.000Z","version_change":"0.143.0 → 0.143.3","issue":{"uuid":"6005154243","node_id":"PR_kwDORlvf988AAAABKV5CRw","number":2131,"state":"open","title":"deps(uv): bump the uv-minor-patch group with 7 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-23T20:42:52.000Z","updated_at":"2026-10-23T20:43:10.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(uv): bump","group_name":"uv-minor-patch","update_count":7,"packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fonttools","old_version":"4.66.1","new_version":"4.67.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"pymongo","old_version":"4.18.3","new_version":"4.19.0","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"gitpython","old_version":"3.2.0","new_version":"3.2.1","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"pluggy","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"ruff","old_version":"0.17.0","new_version":"0.17.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"distlib","old_version":"0.4.3","new_version":"0.4.4","repository_url":"https://github.com/pypa/distlib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-minor-patch group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.143.0` | `0.143.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.66.1` | `4.67.0` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.18.3` | `4.19.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.2.0` | `3.2.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.6.0` | `1.7.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.17.0` | `0.17.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.4.3` | `0.4.4` |\n\nUpdates `fastapi` from 0.143.0 to 0.143.3\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fonttools` from 4.66.1 to 4.67.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fonttools/fonttools/releases\"\u003efonttools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.67.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Support decreasing design-space axis mappings, via a new keyword-only \u003ccode\u003eallow_decreasing\u003c/code\u003e argument to \u003ccode\u003emodels.normalizeValue\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3970\"\u003e#3970\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4217\"\u003e#4217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4243\"\u003e#4243\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Allow partial DesignSpace v5 axis subsets: omitted range attributes on an \u003ccode\u003e\u0026lt;axis-subset\u0026gt;\u003c/code\u003e are taken from the parent axis, as the spec says (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4205\"\u003e#4205\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Fix \u003ccode\u003eDesignSpaceDocument.normalize()\u003c/code\u003e for mapped axes: axis bounds and rule conditions are now normalized from their original values (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4218\"\u003e#4218\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] \u003ccode\u003esplitInterpolable\u003c/code\u003e and \u003ccode\u003esplitVariableFonts\u003c/code\u003e now warn when a source or instance is dropped because it lies outside the document's own axes, instead of silently discarding it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4244\"\u003e#4244\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Add support for instancing variable COLRv1 fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2699\"\u003e#2699\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4279\"\u003e#4279\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Apply VVAR vertical-origin deltas to \u003ccode\u003eVORG\u003c/code\u003e, and use OpenType rounding for instanced advances and vertical origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4221\"\u003e#4221\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Keep a universal FeatureVariations record when pinning removes its last condition but other axes remain (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4247\"\u003e#4247\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Preserve ppem \u003ccode\u003eDevice\u003c/code\u003e corrections in GDEF, BASE, GPOS and JSTF instead of asserting on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4290\"\u003e#4290\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Allow requesting an axis's original range on VARC fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4280\"\u003e#4280\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer, subset] Fold, remove or remap MATH \u003ccode\u003eVariationIndex\u003c/code\u003e devices when instancing, subsetting the GDEF store or optimizing it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4288\"\u003e#4288\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Raise \u003ccode\u003eValueError: Missing required table fvar\u003c/code\u003e from \u003ccode\u003evarLib.mutator\u003c/code\u003e and the instancer CLI on a static font, instead of a bare \u003ccode\u003eKeyError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3751\"\u003e#3751\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4300\"\u003e#4300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[featureVars] When adding \u003ccode\u003ervrn\u003c/code\u003e, also shift lookup indices inside existing FeatureVariations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4233\"\u003e#4233\u003c/a\u003e). Handle null \u003ccode\u003eConditionSet\u003c/code\u003e and \u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e offsets when building, subsetting and instancing (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4234\"\u003e#4234\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4235\"\u003e#4235\u003c/a\u003e). Keep \u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e records sorted after merging new ones into an existing record (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4248\"\u003e#4248\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fix FeatureParams (\u003ccode\u003esize\u003c/code\u003e, \u003ccode\u003essXX\u003c/code\u003e, \u003ccode\u003ecvXX\u003c/code\u003e) in FeatureVariations alternate feature tables, which failed to compile and round-trip (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3623\"\u003e#3623\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4278\"\u003e#4278\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fully decode lazily loaded ligatures, \u003ccode\u003eSinglePos\u003c/code\u003e and \u003ccode\u003ePairPos\u003c/code\u003e arrays during recursive decompilation, so \u003ccode\u003ereorderGlyphs()\u003c/code\u003e on a lazy font no longer corrupts or asserts on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4231\"\u003e#4231\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4232\"\u003e#4232\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Update the variation-store binary format to follow \u003ca href=\"https://redirect.github.com/harfbuzz/boring-expansion-spec/issues/175\"\u003eharfbuzz/boring-expansion-spec#175\u003c/a\u003e: \u003ccode\u003eSparseVarRegionList.RegionCount\u003c/code\u003e is uint32, sparse axes use Offset32 and \u003ccode\u003eMultiVarData\u003c/code\u003e items are stored in an INDEX. VARC fonts built with earlier fontTools versions must be rebuilt (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4219\"\u003e#4219\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Several fixes: derive component conditions from \u003ccode\u003econditionIndex\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4237\"\u003e#4237\u003c/a\u003e), set the implicit \u003ccode\u003escaleY\u003c/code\u003e when importing XML (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4238\"\u003e#4238\u003c/a\u003e), report the font's current coordinates for components that reset unspecified axes (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4239\"\u003e#4239\u003c/a\u003e), and keep inherited coordinates when drawing CFF2 VARC components (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4236\"\u003e#4236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] \u003ccode\u003ebuildMultiVarData\u003c/code\u003e accepts flattened per-region vector tuples (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4245\"\u003e#4245\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[otConverters] Bounds-check CFF2 INDEX count and \u003ccode\u003eoffSize\u003c/code\u003e on read, raising \u003ccode\u003eTTLibError\u003c/code\u003e instead of allocating huge lazy lists (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4220\"\u003e#4220\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Handle empty packed deltas when \u003ccode\u003eOPTIMIZE_FONT_SPEED\u003c/code\u003e is set (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4241\"\u003e#4241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[scaleUpem] Scale per-glyph \u003ccode\u003eVORG\u003c/code\u003e origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4222\"\u003e#4222\u003c/a\u003e); fix VARC scaling for static fonts and condition variations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4223\"\u003e#4223\u003c/a\u003e); don't mutate the shared default CFF \u003ccode\u003eFontMatrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4251\"\u003e#4251\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4252\"\u003e#4252\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cmap] Fix format 2 compilation when all codes are single-byte (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/1524\"\u003e#1524\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4211\"\u003e#4211\u003c/a\u003e) or all single-byte codes map to \u003ccode\u003e.notdef\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4215\"\u003e#4215\u003c/a\u003e). Formats 2 and 4 now reject glyph IDs above 65535 instead of wrapping them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4226\"\u003e#4226\u003c/a\u003e). Split format 14 default UVS ranges longer than 256 codepoints (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4229\"\u003e#4229\u003c/a\u003e). Empty format 12 and 13 subtables round-trip (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4246\"\u003e#4246\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[glyf] Use unsigned instruction lengths, so programs of 32768-65535 bytes compile and decompile correctly (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4227\"\u003e#4227\u003c/a\u003e). Keep instructions in zero-contour glyphs (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4228\"\u003e#4228\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[pens] Fix cubic off-curve detection in \u003ccode\u003eTTGlyphPointPen\u003c/code\u003e across contour starts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4224\"\u003e#4224\u003c/a\u003e). \u003ccode\u003eGlyph.drawPoints()\u003c/code\u003e now raises \u003ccode\u003eNotImplementedError\u003c/code\u003e for an all-off-curve cubic contour, which the point pen protocol cannot express (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3191\"\u003e#3191\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4225\"\u003e#4225\u003c/a\u003e). \u003ccode\u003eRoundingPen\u003c/code\u003e passes the all-off-curve \u003ccode\u003eNone\u003c/code\u003e sentinel through (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4311\"\u003e#4311\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4312\"\u003e#4312\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[CFF2] Preserve operands when a blend has zero regions (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4240\"\u003e#4240\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cffLib] Read CFF font names as Latin-1, matching how they are written (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4253\"\u003e#4253\u003c/a\u003e). Deleting a CFF dict attribute now actually removes it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2725\"\u003e#2725\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4264\"\u003e#4264\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[CFF2ToCFF] Fix conversion of fonts with local subroutines (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4258\"\u003e#4258\u003c/a\u003e). A CFF2 table with a single FontDict is now converted to a name-keyed CFF font that keeps its glyph names (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3890\"\u003e#3890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4265\"\u003e#4265\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[subset] Handle a null GDEF variation store (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4230\"\u003e#4230\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[merge] Support merging fonts that both have a MATH table (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3823\"\u003e#3823\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4257\"\u003e#4257\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Reject the same mark class used twice in one anchor list (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3628\"\u003e#3628\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4255\"\u003e#4255\u003c/a\u003e). Don't crash on value records whose devices are all NULL (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2396\"\u003e#2396\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4261\"\u003e#4261\u003c/a\u003e). Pad a short OS/2 \u003ccode\u003eVendor\u003c/code\u003e with spaces (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4259\"\u003e#4259\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[feaLib] Raise \u003ccode\u003eFeatureLibError\u003c/code\u003e with a location, instead of a bare Python error, for: a BASE script list without a matching tag list (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4263\"\u003e#4263\u003c/a\u003e), a \u003ccode\u003eUnicodeRange\u003c/code\u003e bit outside 0-127 (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4266\"\u003e#4266\u003c/a\u003e), a name string that cannot be decoded (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4267\"\u003e#4267\u003c/a\u003e), a STAT axis \u003ccode\u003elocation\u003c/code\u003e with no or too many values (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4268\"\u003e#4268\u003c/a\u003e), and a non-ASCII OS/2 \u003ccode\u003eVendor\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4269\"\u003e#4269\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[name] Fix the BCP 47 tags of some Mac and Windows language IDs, e.g. \u003ccode\u003ees\u003c/code\u003e was mapped to Mac Estonian (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3733\"\u003e#3733\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4256\"\u003e#4256\u003c/a\u003e). \u003ccode\u003egetDebugName\u003c/code\u003e prefers the Windows English name over the Mac one (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3969\"\u003e#3969\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4273\"\u003e#4273\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[post] Don't crash on a format 2.0 table with \u003ccode\u003enumGlyphs\u003c/code\u003e set to 0 (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3060\"\u003e#3060\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4274\"\u003e#4274\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VDMX] Recompute \u003ccode\u003enumRecs\u003c/code\u003e and \u003ccode\u003enumRatios\u003c/code\u003e when compiling (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4293\"\u003e#4293\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[Silf] Fix compiling a \u003ccode\u003eSilf\u003c/code\u003e table that was decompiled from binary (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4294\"\u003e#4294\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[woff2] Preserve \u003ccode\u003eminorVersion\u003c/code\u003e when copying flavor data (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4249\"\u003e#4249\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4250\"\u003e#4250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttGlyphSet] Compute glyph width lazily for glyf variable fonts without HVAR, so \u003ccode\u003e.width\u003c/code\u003e is correct before drawing (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3964\"\u003e#3964\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4260\"\u003e#4260\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.interpolatable] Respect designspace source layers (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3951\"\u003e#3951\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4275\"\u003e#4275\u003c/a\u003e); fix \u003ccode\u003e--json\u003c/code\u003e output with SciPy (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3870\"\u003e#3870\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4276\"\u003e#4276\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.psLib] Fix tokenizing of escaped parentheses in PostScript strings (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4207\"\u003e#4207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[svgLib] Raise \u003ccode\u003eValueError\u003c/code\u003e instead of \u003ccode\u003eIndexError\u003c/code\u003e on a truncated path command (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4254\"\u003e#4254\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.transform] Preserve the direction of the remaining axis when decomposing a transform whose first column is zero (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4242\"\u003e#4242\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.textTools] \u003ccode\u003eTag.__ne__\u003c/code\u003e returns \u003ccode\u003eNotImplemented\u003c/code\u003e for unsupported types (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4305\"\u003e#4305\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4306\"\u003e#4306\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.dictTools] \u003ccode\u003ehashdict\u003c/code\u003e rejects in-place union (\u003ccode\u003e|=\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4313\"\u003e#4313\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4314\"\u003e#4314\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.xmlReader] Close owned input streams when parsing fails (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4298\"\u003e#4298\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[misc.filesystem] \u003ccode\u003eWriteZipFS.close()\u003c/code\u003e can be called more than once (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4309\"\u003e#4309\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4310\"\u003e#4310\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[EBDT] Keep EBDT/CBDT glyph metrics after probing a missing attribute (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3806\"\u003e#3806\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4216\"\u003e#4216\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/fonttools/fonttools/blob/main/NEWS.rst\"\u003efonttools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.67.0 (released 2026-10-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[varLib] Support decreasing design-space axis mappings, via a new keyword-only\n\u003ccode\u003eallow_decreasing\u003c/code\u003e argument to \u003ccode\u003emodels.normalizeValue\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3970\"\u003e#3970\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4217\"\u003e#4217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4243\"\u003e#4243\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Allow partial DesignSpace v5 axis subsets: omitted range attributes\non an \u003ccode\u003e\u0026lt;axis-subset\u0026gt;\u003c/code\u003e are taken from the parent axis, as the spec says (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4205\"\u003e#4205\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] Fix \u003ccode\u003eDesignSpaceDocument.normalize()\u003c/code\u003e for mapped axes: axis\nbounds and rule conditions are now normalized from their original values (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4218\"\u003e#4218\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[designspaceLib] \u003ccode\u003esplitInterpolable\u003c/code\u003e and \u003ccode\u003esplitVariableFonts\u003c/code\u003e now warn when a\nsource or instance is dropped because it lies outside the document's own axes,\ninstead of silently discarding it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4244\"\u003e#4244\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Add support for instancing variable COLRv1 fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/2699\"\u003e#2699\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4279\"\u003e#4279\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Apply VVAR vertical-origin deltas to \u003ccode\u003eVORG\u003c/code\u003e, and use OpenType\nrounding for instanced advances and vertical origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4221\"\u003e#4221\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Keep a universal FeatureVariations record when pinning removes\nits last condition but other axes remain (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4247\"\u003e#4247\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Preserve ppem \u003ccode\u003eDevice\u003c/code\u003e corrections in GDEF, BASE, GPOS and JSTF\ninstead of asserting on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4290\"\u003e#4290\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer] Allow requesting an axis's original range on VARC fonts (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4280\"\u003e#4280\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib.instancer, subset] Fold, remove or remap MATH \u003ccode\u003eVariationIndex\u003c/code\u003e devices\nwhen instancing, subsetting the GDEF store or optimizing it (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4288\"\u003e#4288\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] Raise \u003ccode\u003eValueError: Missing required table fvar\u003c/code\u003e from \u003ccode\u003evarLib.mutator\u003c/code\u003e\nand the instancer CLI on a static font, instead of a bare \u003ccode\u003eKeyError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3751\"\u003e#3751\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4300\"\u003e#4300\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[featureVars] When adding \u003ccode\u003ervrn\u003c/code\u003e, also shift lookup indices inside existing\nFeatureVariations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4233\"\u003e#4233\u003c/a\u003e). Handle null \u003ccode\u003eConditionSet\u003c/code\u003e and\n\u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e offsets when building, subsetting and instancing\n(\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4234\"\u003e#4234\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4235\"\u003e#4235\u003c/a\u003e). Keep \u003ccode\u003eFeatureTableSubstitution\u003c/code\u003e records sorted after merging new\nones into an existing record (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4248\"\u003e#4248\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fix FeatureParams (\u003ccode\u003esize\u003c/code\u003e, \u003ccode\u003essXX\u003c/code\u003e, \u003ccode\u003ecvXX\u003c/code\u003e) in FeatureVariations\nalternate feature tables, which failed to compile and round-trip (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/3623\"\u003e#3623\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4278\"\u003e#4278\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Fully decode lazily loaded ligatures, \u003ccode\u003eSinglePos\u003c/code\u003e and \u003ccode\u003ePairPos\u003c/code\u003e arrays\nduring recursive decompilation, so \u003ccode\u003ereorderGlyphs()\u003c/code\u003e on a lazy font no longer\ncorrupts or asserts on them (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4231\"\u003e#4231\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4232\"\u003e#4232\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Update the variation-store binary format to follow\n\u003ca href=\"https://redirect.github.com/harfbuzz/boring-expansion-spec/issues/175\"\u003eharfbuzz/boring-expansion-spec#175\u003c/a\u003e: \u003ccode\u003eSparseVarRegionList.RegionCount\u003c/code\u003e is uint32,\nsparse axes use Offset32 and \u003ccode\u003eMultiVarData\u003c/code\u003e items are stored in an INDEX. VARC\nfonts built with earlier fontTools versions must be rebuilt (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4219\"\u003e#4219\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[VARC] Several fixes: derive component conditions from \u003ccode\u003econditionIndex\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4237\"\u003e#4237\u003c/a\u003e),\nset the implicit \u003ccode\u003escaleY\u003c/code\u003e when importing XML (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4238\"\u003e#4238\u003c/a\u003e), report the font's current\ncoordinates for components that reset unspecified axes (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4239\"\u003e#4239\u003c/a\u003e), and keep inherited\ncoordinates when drawing CFF2 VARC components (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4236\"\u003e#4236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[varLib] \u003ccode\u003ebuildMultiVarData\u003c/code\u003e accepts flattened per-region vector tuples (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4245\"\u003e#4245\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[otConverters] Bounds-check CFF2 INDEX count and \u003ccode\u003eoffSize\u003c/code\u003e on read, raising\n\u003ccode\u003eTTLibError\u003c/code\u003e instead of allocating huge lazy lists (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4220\"\u003e#4220\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[ttLib] Handle empty packed deltas when \u003ccode\u003eOPTIMIZE_FONT_SPEED\u003c/code\u003e is set (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4241\"\u003e#4241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[scaleUpem] Scale per-glyph \u003ccode\u003eVORG\u003c/code\u003e origins (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4222\"\u003e#4222\u003c/a\u003e); fix VARC scaling for static\nfonts and condition variations (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4223\"\u003e#4223\u003c/a\u003e); don't mutate the shared default CFF\n\u003ccode\u003eFontMatrix\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4251\"\u003e#4251\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4252\"\u003e#4252\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e[cmap] Fix format 2 compilation when all codes are single-byte (\u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/1524\"\u003e#1524\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4211\"\u003e#4211\u003c/a\u003e) or\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/fonttools/fonttools/commit/16f88cb09446ab617a1a788e48ae12e0f0ec5217\"\u003e\u003ccode\u003e16f88cb\u003c/code\u003e\u003c/a\u003e Release 4.67.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/5049c83959de649b5cda2a4b7d1da3cc3436079b\"\u003e\u003ccode\u003e5049c83\u003c/code\u003e\u003c/a\u003e Update NEWS.rst [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/fdfd15f959c2a263163e13db917b58c9e4844548\"\u003e\u003ccode\u003efdfd15f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4314\"\u003e#4314\u003c/a\u003e from xiehuanyi/fix/hashdict-inplace-union-20261014\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/87ee7d321f456039fe7ae7d9b9a87b164c051e21\"\u003e\u003ccode\u003e87ee7d3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4312\"\u003e#4312\u003c/a\u003e from xiehuanyi/fix/roundingpen-offcurve-none-20261014\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/e6e65d3748f8af2a9e3685c0cae915d9f20112c4\"\u003e\u003ccode\u003ee6e65d3\u003c/code\u003e\u003c/a\u003e [dictTools] Reject in-place union on hashdict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/10cfefe61a82824662296f447bec1f8503a313d6\"\u003e\u003ccode\u003e10cfefe\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4310\"\u003e#4310\u003c/a\u003e from xiehuanyi/fix/writezipfs-idempotent-close-20261014\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/06157e4d91539f7bac16aaa306fc53ca61b9792b\"\u003e\u003ccode\u003e06157e4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4300\"\u003e#4300\u003c/a\u003e from CAOShurong/codex/3751-missing-fvar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/2940a2e5260489a7fd9045cf2cfc329b1db151d3\"\u003e\u003ccode\u003e2940a2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4298\"\u003e#4298\u003c/a\u003e from xiehuanyi/fix-xml-reader-failure-cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/821805d066d548b32334841fcc0de5f5c8b24b5b\"\u003e\u003ccode\u003e821805d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/fonttools/fonttools/issues/4306\"\u003e#4306\u003c/a\u003e from xiehuanyi/fix/tag-notimplemented-comparison-202...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fonttools/fonttools/commit/85538d641a2babe23e31b37b2aa32d0a271ec2b0\"\u003e\u003ccode\u003e85538d6\u003c/code\u003e\u003c/a\u003e [roundingPen] Preserve all-off-curve quadratic sentinel\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fonttools/fonttools/compare/4.66.1...4.67.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymongo` from 4.18.3 to 4.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mongodb/mongo-python-driver/releases\"\u003epymongo's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMongo 4.19.0\u003c/h2\u003e\n\u003cp\u003eRelease notes: \u003ca href=\"https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004\u0026amp;version=52147\"\u003ehttps://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004\u0026amp;version=52147\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/mongodb/mongo-python-driver/blob/main/doc/changelog.rst\"\u003epymongo's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChanges in Version 4.19.0 (2026/10/14)\u003c/h2\u003e\n\u003cp\u003ePyMongo 4.19 brings a number of changes including:\u003c/p\u003e\n\u003cp\u003e.. warning:: PyMongo 4.19 drops support for Python 3.9 and 3.10 and removes\nPyPy support: Python 3.11+ is now required.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9 and 3.10.\u003c/li\u003e\n\u003cli\u003eRemoved support for PyPy.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eAlgorithm.RANGEPREVIEW\u003c/code\u003e and\n\u003ccode\u003eQueryType.RANGEPREVIEW\u003c/code\u003e members (\u003ccode\u003ePYTHON-6009\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003eAdded support for running the synchronous and asynchronous clients in\nsubinterpreters, including inside\n\u003ccode\u003econcurrent.futures.InterpreterPoolExecutor\u003c/code\u003e (Python 3.14+). Only in\nsubinterpreters, which do not allow daemon threads, the synchronous\nclient's monitor threads now start as non-daemon threads and are stopped\nand joined when the interpreter is torn down. Monitor threads in the main\ninterpreter remain daemon threads and shutdown behavior is unchanged.\nNote that because these threads are non-daemon, a subinterpreter may block\non teardown until any in-flight monitor work completes.\u003c/li\u003e\n\u003cli\u003eAdded support for routing Key Management Service (KMS) requests for\nClient-Side Field Level Encryption and Queryable Encryption through an HTTP\nproxy, using the new \u003ccode\u003ekms_connect_callback\u003c/code\u003e option on\n:class:\u003ccode\u003e~pymongo.encryption_options.AutoEncryptionOpts\u003c/code\u003e,\n:class:\u003ccode\u003e~pymongo.encryption.ClientEncryption\u003c/code\u003e, and\n:class:\u003ccode\u003e~pymongo.asynchronous.encryption.AsyncClientEncryption\u003c/code\u003e. The callback\nopens the connection and the driver performs the KMS TLS handshake over it, so\nverification still targets the KMS host rather than the proxy. For an ordinary\nHTTP proxy, pass :class:\u003ccode\u003e~pymongo.encryption_options.HTTPProxyKMSConnect\u003c/code\u003e or\n:class:\u003ccode\u003e~pymongo.encryption_options.AsyncHTTPProxyKMSConnect\u003c/code\u003e instead of\nwriting a callback. Both helpers accept custom \u003ccode\u003eCONNECT\u003c/code\u003e headers, e.g.\n\u003ccode\u003eProxy-Authorization\u003c/code\u003e for proxies that require authentication.\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003esrv_host_validator\u003c/code\u003e keyword argument to\n:class:\u003ccode\u003e~pymongo.synchronous.mongo_client.MongoClient\u003c/code\u003e and\n:class:\u003ccode\u003e~pymongo.asynchronous.mongo_client.AsyncMongoClient\u003c/code\u003e, an alternative to\n\u003ccode\u003esrvAllowedHostsSuffix\u003c/code\u003e for deployments whose acceptable SRV hosts cannot be\nexpressed as a single suffix. The callback is invoked once per SRV-returned\nhost and must return a boolean: \u003ccode\u003eTrue\u003c/code\u003e to accept the host and \u003ccode\u003eFalse\u003c/code\u003e to\nreject it. During initial DNS discovery a non-boolean return raises an error;\nduring SRV polling it is treated as a rejection. It is mutually exclusive with\n\u003ccode\u003esrvAllowedHostsSuffix\u003c/code\u003e and, because it takes a callable, cannot be set in a\nconnection string. See the\n:class:\u003ccode\u003e~pymongo.synchronous.mongo_client.MongoClient\u003c/code\u003e and\n:class:\u003ccode\u003e~pymongo.asynchronous.mongo_client.AsyncMongoClient\u003c/code\u003e documentation for\nsecurity considerations.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esrvAllowedHostsSuffix\u003c/code\u003e may now be set to a single label reserved for\nprivate or special use, such as \u003ccode\u003elocalhost\u003c/code\u003e, \u003ccode\u003etest\u003c/code\u003e, or \u003ccode\u003einternal\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/mongodb/mongo-python-driver/commit/a58b4f4f5ac6d21d071593c0f24b2e94a1cf6786\"\u003e\u003ccode\u003ea58b4f4\u003c/code\u003e\u003c/a\u003e Prep 4.19 Release (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3122\"\u003e#3122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/3242611c4f22224b7da49573fedc64b3a25679e8\"\u003e\u003ccode\u003e3242611\u003c/code\u003e\u003c/a\u003e PYTHON-6147 Add CSFLE HTTP proxy KMS connect helpers (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/b5a7f2606a45681c1044b5f96b438f3c822af845\"\u003e\u003ccode\u003eb5a7f26\u003c/code\u003e\u003c/a\u003e PYTHON-6009 Remove deprecated Algorithm.RANGEPREVIEW and QueryType.RANGEPREVI...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/f3f19df764379daee90d5be947a3bc926c47f525\"\u003e\u003ccode\u003ef3f19df\u003c/code\u003e\u003c/a\u003e PYTHON-6170 [BF] AWS ECS test container cannot install uv (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/a740cdf79cc5e71ee465ea06c7cfd479946387d1\"\u003e\u003ccode\u003ea740cdf\u003c/code\u003e\u003c/a\u003e PYTHON-6063 Remove PyPy support (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/ed744013a283aab8a38b9726d13a894e1be5e5c0\"\u003e\u003ccode\u003eed74401\u003c/code\u003e\u003c/a\u003e PYTHON-6138 followup -- Drop Python 3.9 and 3.10 Support (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3118\"\u003e#3118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/e0b11bf246f9668ae2ed9be7703ebb8b4d862b7e\"\u003e\u003ccode\u003ee0b11bf\u003c/code\u003e\u003c/a\u003e PYTHON-6163 Pure-Python decode_all silently accepts 1-byte invalid BSON (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/b5a36ccbdb97298fbf9b5b5767affe92c534461f\"\u003e\u003ccode\u003eb5a36cc\u003c/code\u003e\u003c/a\u003e PYTHON-6111 C extension accepts BSON documents where element data overlaps th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/1f64ecdd5195b24c8282495cef05becd522d1dfa\"\u003e\u003ccode\u003e1f64ecd\u003c/code\u003e\u003c/a\u003e PYTHON-6158 Clean up version-gated code paths (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3112\"\u003e#3112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mongodb/mongo-python-driver/commit/0cc64d6decc17b1c7bdbcfedee5b09983ce24b69\"\u003e\u003ccode\u003e0cc64d6\u003c/code\u003e\u003c/a\u003e PYTHON-6161 Fix mod_wsgi CI: run apt-get update before install (\u003ca href=\"https://redirect.github.com/mongodb/mongo-python-driver/issues/3115\"\u003e#3115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mongodb/mongo-python-driver/compare/4.18.3...4.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.2.0 to 3.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eprepare for next release, v3.2 by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2260\"\u003egitpython-developers/GitPython#2260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eobjects: decode a byte mode before reading its digits by \u003ca href=\"https://github.com/SashaMIT\"\u003e\u003ccode\u003e@​SashaMIT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2261\"\u003egitpython-developers/GitPython#2261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e from v0.16.5 to 0.16.9 in the pre-commit group 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/gitpython-developers/GitPython/pull/2263\"\u003egitpython-developers/GitPython#2263\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(submodule): validate destinations before mutation by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2264\"\u003egitpython-developers/GitPython#2264\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(util): create lock files in one exclusive step by \u003ca href=\"https://github.com/radhika1314\"\u003e\u003ccode\u003e@​radhika1314\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2267\"\u003egitpython-developers/GitPython#2267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(commit): accumulate gpgsig continuation lines in linear time by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2268\"\u003egitpython-developers/GitPython#2268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(index): accept a single PathLike in checkout by \u003ca href=\"https://github.com/kokotatan\"\u003e\u003ccode\u003e@​kokotatan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2269\"\u003egitpython-developers/GitPython#2269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(util): redact URL credentials without corrupting the host by \u003ca href=\"https://github.com/yunaremaia\"\u003e\u003ccode\u003e@​yunaremaia\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2270\"\u003egitpython-developers/GitPython#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange line for changelogs by \u003ca href=\"https://github.com/CrowZhen\"\u003e\u003ccode\u003e@​CrowZhen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2272\"\u003egitpython-developers/GitPython#2272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(commit): reject identity fields that alter commit headers by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2271\"\u003egitpython-developers/GitPython#2271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: stop stalled remote commands when their timeout expires by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2277\"\u003egitpython-developers/GitPython#2277\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(util): reject symbolic links that alias \u003ccode\u003e.gitmodules\u003c/code\u003e by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2278\"\u003egitpython-developers/GitPython#2278\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: send one object name or path per git stdin record by \u003ca href=\"https://github.com/Keerthana-64\"\u003e\u003ccode\u003e@​Keerthana-64\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2279\"\u003egitpython-developers/GitPython#2279\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(stats): preserve whitespace in filenames by \u003ca href=\"https://github.com/v1shay\"\u003e\u003ccode\u003e@​v1shay\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2280\"\u003egitpython-developers/GitPython#2280\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(config): preserve exact large integer values by \u003ca href=\"https://github.com/xiehuanyi\"\u003e\u003ccode\u003e@​xiehuanyi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2281\"\u003egitpython-developers/GitPython#2281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve IterableList names independently of list attributes by \u003ca href=\"https://github.com/FanWu-ai\"\u003e\u003ccode\u003e@​FanWu-ai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2283\"\u003egitpython-developers/GitPython#2283\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix relative blocking lock 20261011 by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2284\"\u003egitpython-developers/GitPython#2284\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/SashaMIT\"\u003e\u003ccode\u003e@​SashaMIT\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2261\"\u003egitpython-developers/GitPython#2261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kokotatan\"\u003e\u003ccode\u003e@​kokotatan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2269\"\u003egitpython-developers/GitPython#2269\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yunaremaia\"\u003e\u003ccode\u003e@​yunaremaia\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2270\"\u003egitpython-developers/GitPython#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CrowZhen\"\u003e\u003ccode\u003e@​CrowZhen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2272\"\u003egitpython-developers/GitPython#2272\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/v1shay\"\u003e\u003ccode\u003e@​v1shay\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2280\"\u003egitpython-developers/GitPython#2280\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/xiehuanyi\"\u003e\u003ccode\u003e@​xiehuanyi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2281\"\u003egitpython-developers/GitPython#2281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FanWu-ai\"\u003e\u003ccode\u003e@​FanWu-ai\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2283\"\u003egitpython-developers/GitPython#2283\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.2.0...3.2.1\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.2.0...3.2.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/gitpython-developers/GitPython/blob/main/doc/source/changes.rst\"\u003egitpython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.2.1\u003c/h1\u003e\n\u003cp\u003eSecurity fixes for\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-83vg-56qc-22m7\"\u003ehttps://github.com/gitpython-developers/GitPython/security/advisories/GHSA-83vg-56qc-22m7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf you can, also try and provide feedback on the upcoming v4 branch\n\u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2274\"\u003egitpython-developers/GitPython#2274\u003c/a\u003e - patches welcome.\u003c/p\u003e\n\u003cp\u003eSee the following for all changes.\n\u003ca href=\"https://github.com/gitpython-developers/GitPython/releases/tag/3.2.1\"\u003ehttps://github.com/gitpython-developers/GitPython/releases/tag/3.2.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/gitpython-developers/GitPython/commit/c179357b38a8962f1c8e33153ac58b5ac0e6e96a\"\u003e\u003ccode\u003ec179357\u003c/code\u003e\u003c/a\u003e prepare changelog prior to release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/97eadb888d2f99567e3113f4e455be4ca128f697\"\u003e\u003ccode\u003e97eadb8\u003c/code\u003e\u003c/a\u003e fix(submodule): validate destinations before mutation\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.2.0...3.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pluggy` from 1.6.0 to 1.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pluggy/blob/main/CHANGELOG.rst\"\u003epluggy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epluggy 1.7.0 (2026-10-14)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#632](https://github.com/pytest-dev/pluggy/issues/632) \u0026lt;https://github.com/pytest-dev/pluggy/issues/632\u0026gt;\u003c/code\u003e_: Hookspec methods defined without \u003ccode\u003eself\u003c/code\u003e as the first parameter now emit a :class:\u003ccode\u003eDeprecationWarning\u003c/code\u003e. Add \u003ccode\u003eself\u003c/code\u003e as the first parameter or use \u003ccode\u003e@staticmethod\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#170](https://github.com/pytest-dev/pluggy/issues/170) \u0026lt;https://github.com/pytest-dev/pluggy/issues/170\u0026gt;\u003c/code\u003e_: Hookspecs can now declare default values for arguments, using the usual \u003ccode\u003edef myhook(myarg=\u0026quot;default\u0026quot;)\u003c/code\u003e syntax.\nThis is mainly a backward compatibility feature, to allow a hookspec to add new parameters to an existing hook without breaking existing \u003cem\u003ecallers\u003c/em\u003e.\nSee :ref:\u003ccode\u003ehookspec_arg_default\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#729](https://github.com/pytest-dev/pluggy/issues/729) \u0026lt;https://github.com/pytest-dev/pluggy/issues/729\u0026gt;\u003c/code\u003e_: Tracing now adds detail where \u003ccode\u003estr()\u003c/code\u003e is ambiguous: empty strings and strings containing\nwhitespace are quoted, and enums and paths show their \u003ccode\u003erepr()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eA value spanning several lines is now displayed as a block instead of running into the\nsurrounding trace.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#629](https://github.com/pytest-dev/pluggy/issues/629) \u0026lt;https://github.com/pytest-dev/pluggy/issues/629\u0026gt;\u003c/code\u003e_: Fix hooks failing to register on Python 3.14+ when type annotations use forward references.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#315](https://github.com/pytest-dev/pluggy/issues/315) \u0026lt;https://github.com/pytest-dev/pluggy/issues/315\u0026gt;\u003c/code\u003e_: Source archives created by \u003ccode\u003egit archive\u003c/code\u003e (including GitHub's \u0026quot;Source code\u0026quot; downloads) now carry version information, so building pluggy from them no longer fails with a missing version.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#442](https://github.com/pytest-dev/pluggy/issues/442) \u0026lt;https://github.com/pytest-dev/pluggy/issues/442\u0026gt;\u003c/code\u003e_: With the addition of default values for hookspec arguments, we also changed the precedence of default values for \u003cem\u003ehookimpl\u003c/em\u003e arguments.\nPreviously, if a hookimpl function declared a default for an argument, it was always used, even if the \u003cem\u003ehook call\u003c/em\u003e passed an explicit value.\nNow the precedence is changed to: hook call passed value \u0026gt; hookspec default value \u0026gt; hookimpl default value.\nSee :ref:\u003ccode\u003ehookimpl_arg_defaults\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003e[#701](https://github.com/pytest-dev/pluggy/issues/701) \u0026lt;https://github.com/pytest-dev/pluggy/issues/701\u0026gt;\u003c/code\u003e_: Hookimpls and hookspecs are now discovered via :func:\u003ccode\u003einspect.getattr_static\u003c/code\u003e, so\nproperties, \u003ccode\u003ecached_property\u003c/code\u003e and other descriptors are no longer executed while\nscanning a plugin. Hooks declared through such a descriptor are not supported.\u003c/p\u003e\n\u003cp\u003eAs a side effect, \u003ccode\u003e@hookimpl\u003c/code\u003e/\u003ccode\u003e@hookspec\u003c/code\u003e applied \u003cem\u003eabove\u003c/em\u003e \u003ccode\u003e@classmethod\u003c/code\u003e or\n\u003ccode\u003e@staticmethod\u003c/code\u003e is now picked up; previously the marker sat on the wrapper where\n\u003ccode\u003egetattr()\u003c/code\u003e never saw it. Callables stored directly on a plugin instance -- in its\n\u003ccode\u003e__dict__\u003c/code\u003e or in a \u003ccode\u003e__slots__\u003c/code\u003e slot -- keep being called exactly as \u003ccode\u003egetattr()\u003c/code\u003e\nreturned them, i.e. without an implicit \u003ccode\u003eself\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/pytest-dev/pluggy/commit/4c7f6365f2dde09c11e72db67d0f615231d64c19\"\u003e\u003ccode\u003e4c7f636\u003c/code\u003e\u003c/a\u003e Preparing release 1.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/21c7e1672941a0cd9e3c555bf5e5007f1fbe3dc5\"\u003e\u003ccode\u003e21c7e16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/787\"\u003e#787\u003c/a\u003e from pytest-dev/rm-outdated-doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/628959b178ab075c0b9af833511e53b4f5640fcb\"\u003e\u003ccode\u003e628959b\u003c/code\u003e\u003c/a\u003e docs: remove outdated hookimpl default args paragraph\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/2edab5eb6d1d68d628e68b1aa0796d2388733446\"\u003e\u003ccode\u003e2edab5e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/752\"\u003e#752\u003c/a\u003e from bluetech/register-none-allow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/6995073de5ebc58d97dc017a7c2b7c5904f4c485\"\u003e\u003ccode\u003e6995073\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/776\"\u003e#776\u003c/a\u003e from RonnyPfannschmidt/fix/uv-lock-pytest-downgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/50c1ac94b4a3e64d2b8e1a1868d3c580c95c7164\"\u003e\u003ccode\u003e50c1ac9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/781\"\u003e#781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/6a7e84e48cbeacdcb231a1e6dffc0bd6b6bd085e\"\u003e\u003ccode\u003e6a7e84e\u003c/code\u003e\u003c/a\u003e Add changelog fragment for \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/776\"\u003e#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/d22cfb59c2a4c35af1335af338587d11a9a624ce\"\u003e\u003ccode\u003ed22cfb5\u003c/code\u003e\u003c/a\u003e Drop tox from the dev dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/74cbfa2b9a9ebf6098beb493ad1113efeb0e45e9\"\u003e\u003ccode\u003e74cbfa2\u003c/code\u003e\u003c/a\u003e Relock pytest and tox that dependabot downgraded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pluggy/commit/87f130aa18d8fdf9c92585e72423eca7f3de727d\"\u003e\u003ccode\u003e87f130a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pluggy/issues/755\"\u003e#755\u003c/a\u003e from harbinresearcher/codex/entrypoint-plugin-presence\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pluggy/compare/1.6.0...1.7.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.17.0 to 0.17.1\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.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-15.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Don't treat \u003ccode\u003eNone\u003c/code\u003e, \u003ccode\u003eTrue\u003c/code\u003e, or \u003ccode\u003eFalse\u003c/code\u003e as keywords (\u003ccode\u003eE271\u003c/code\u003e-\u003ccode\u003eE274\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29322\"\u003e#29322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix dedent with multiple leading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29382\"\u003e#29382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Detect legacy positional-only parameters in \u003ccode\u003e__new__\u003c/code\u003e methods (\u003ccode\u003ePYI063\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28502\"\u003e#28502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positives on quoted annotations (\u003ccode\u003ePYI036\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29274\"\u003e#29274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Avoid invalid comprehension suggestions (\u003ccode\u003ePERF401\u003c/code\u003e, \u003ccode\u003ePERF403\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29366\"\u003e#29366\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat more \u003ccode\u003ecollections\u003c/code\u003e and \u003ccode\u003eweakref\u003c/code\u003e containers as mutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29213\"\u003e#29213\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Update default and example \u003ccode\u003ealiases\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29333\"\u003e#29333\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fixfon\"\u003e\u003ccode\u003e@​fixfon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mmaxjr\"\u003e\u003ccode\u003e@​mmaxjr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joshuavetos\"\u003e\u003ccode\u003e@​joshuavetos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nekomario28\"\u003e\u003ccode\u003e@​nekomario28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shan3520\"\u003e\u003ccode\u003e@​shan3520\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.17.1\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.17.1\u003c/h2\u003e\n\u003cp\u003e|  File  | Platform | Checksum |\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/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.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-10-15.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Don't treat \u003ccode\u003eNone\u003c/code\u003e, \u003ccode\u003eTrue\u003c/code\u003e, or \u003ccode\u003eFalse\u003c/code\u003e as keywords (\u003ccode\u003eE271\u003c/code\u003e-\u003ccode\u003eE274\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29322\"\u003e#29322\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix dedent with multiple leading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29382\"\u003e#29382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Detect legacy positional-only parameters in \u003ccode\u003e__new__\u003c/code\u003e methods (\u003ccode\u003ePYI063\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28502\"\u003e#28502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positives on quoted annotations (\u003ccode\u003ePYI036\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29274\"\u003e#29274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eperflint\u003c/code\u003e] Avoid invalid comprehension suggestions (\u003ccode\u003ePERF401\u003c/code\u003e, \u003ccode\u003ePERF403\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29366\"\u003e#29366\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat more \u003ccode\u003ecollections\u003c/code\u003e and \u003ccode\u003eweakref\u003c/code\u003e containers as mutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29213\"\u003e#29213\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-import-conventions\u003c/code\u003e] Update default and example \u003ccode\u003ealiases\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/29333\"\u003e#29333\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fixfon\"\u003e\u003ccode\u003e@​fixfon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mmaxjr\"\u003e\u003ccode\u003e@​mmaxjr\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joshuavetos\"\u003e\u003ccode\u003e@​joshuavetos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nekomario28\"\u003e\u003ccode\u003e@​nekomario28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shan3520\"\u003e\u003ccode\u003e@​shan3520\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/astral-sh/ruff/commit/4683270c69cbdaf6ad64d3f983fc458d5a43b41f\"\u003e\u003ccode\u003e4683270\u003c/code\u003e\u003c/a\u003e Bump version to 0.17.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29420\"\u003e#29420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3514027edb659bbc3c787d355be9d130e5587f15\"\u003e\u003ccode\u003e3514027\u003c/code\u003e\u003c/a\u003e [ty] Update typing conformance suite pin (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29417\"\u003e#29417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/829455624d78f2e89669e4b4b14af2b96abdb1ae\"\u003e\u003ccode\u003e8294556\u003c/code\u003e\u003c/a\u003e Update referenced PR security-review workflow (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29237\"\u003e#29237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d1e1b1f69b511df4385f64b510eeec4da01c1a0e\"\u003e\u003ccode\u003ed1e1b1f\u003c/code\u003e\u003c/a\u003e [ty] Preserve recursive aliases when rebuilding intersections (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29057\"\u003e#29057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/93526150df078af7dd8fc4226cdcc469539d2001\"\u003e\u003ccode\u003e9352615\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eperflint\u003c/code\u003e] Avoid invalid comprehension suggestions (\u003ccode\u003ePERF401\u003c/code\u003e, \u003ccode\u003ePERF403\u003c/code\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/83a3afc3156d73ae4296f3fa74ede28e4c72bfcd\"\u003e\u003ccode\u003e83a3afc\u003c/code\u003e\u003c/a\u003e Fix dedent with multiple leading comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29382\"\u003e#29382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b42a8734410230f4529151782cae951b99bed858\"\u003e\u003ccode\u003eb42a873\u003c/code\u003e\u003c/a\u003e [ty] Clarify object attribute write-contract rationale (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29384\"\u003e#29384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d01678ebf594c97a7767d4372061c1f80ae5b5bb\"\u003e\u003ccode\u003ed01678e\u003c/code\u003e\u003c/a\u003e [ty] Clarify object attribute write-contract rationale (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29384\"\u003e#29384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/355b42a7719d8a555e3ee50c89848b42d8a11eb5\"\u003e\u003ccode\u003e355b42a\u003c/code\u003e\u003c/a\u003e [ty] Avoid writable override contracts from object (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/29373\"\u003e#29373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e26e6d2a54ac2c5e1f5b1945042de3ff3885bf8e\"\u003e\u003ccode\u003ee26e6d2\u003c/code\u003e\u003c/a\u003e [ty] Collect intersection inference through constraint relations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28677\"\u003e#28677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.17.0...0.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.4.3 to 0.4.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.4\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2026-10-16\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecompat\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a missing import. Thanks to Andrej730 for the patch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/273\"\u003e#273\u003c/a\u003e: Enforce compatible-release bounds in environment markers.\nThanks to Luochenchen for the patch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emetadata\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/194\"\u003e#194\u003c/a\u003e: Add an urls property to expose project and home URLs. Thanks to\nSinkleberg for the patch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003escripts\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRaise the correct exception when a launcher can't be written. Thanks to\ncandygoogy for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/144\"\u003e#144\u003c/a\u003e: Detect shell-script Python executables in ScriptMaker shebangs.\nThanks to Alex Chen for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eutil\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance of export entry search to take linear time. Thanks to\nBrian Willows for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003etarfile.data_filter\u003c/code\u003e rather than \u003ccode\u003etarfile.tar_filter\u003c/code\u003e in \u003ccode\u003eunarchive()\u003c/code\u003e\nwhen extraction filters are available, matching the Python 3.14 default. Path and\nlink containment checks now use \u003ccode\u003eos.path.realpath\u003c/code\u003e and no longer fail with\n\u003ccode\u003eIndexError\u003c/code\u003e for members such as \u003ccode\u003e.\u003c/code\u003e or \u003ccode\u003e./\u003c/code\u003e. Thanks to Kobain for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eunarchive()\u003c/code\u003e now resolves member paths through symlinks seen earlier in the\nsame archive, so a chain of individually harmless-looking links cannot be used\nto write outside the destination on Pythons without extraction filters. Thanks to\nKobain for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eversion\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove NormalizedVersion by addressing correctness and performance gaps\nfound by comparison with packaging. Thanks to Damian Shaw for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove SemanticVersion by comparing numeric prerelease identifiers,\nincluding those longer than 8 digits. Thanks to Muneeb Sheikh for the\npatch.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\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/pypa/distlib/commit/25eed06966e45ef26c0c472106c67f9dc9cd4b4b\"\u003e\u003ccode\u003e25eed06\u003c/code\u003e\u003c/a\u003e Changes for 0.4.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/8ffee6f97c745afc8ec7fef4d0f2cb6c112b13c1\"\u003e\u003ccode\u003e8ffee6f\u003c/code\u003e\u003c/a\u003e Resolve member paths through earlier archive symlinks in unarchive()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/ef4a39075b5fd1cffa8aa29f91628f2b3171b524\"\u003e\u003ccode\u003eef4a390\u003c/code\u003e\u003c/a\u003e Test that data_filter rejects absolute symlinks with check=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/380b6a9a5f093eb48958e12255ea778fe9dfe3b6\"\u003e\u003ccode\u003e380b6a9\u003c/code\u003e\u003c/a\u003e Use data_filter and realpath containment checks in unarchive()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/7b7c572c2d5066807243d8096e947ba7fd3e155a\"\u003e\u003ccode\u003e7b7c572\u003c/code\u003e\u003c/a\u003e fix: enforce compatible-release bounds in markers (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/274\"\u003e#274\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/38811ddffca3756110493bd911e70a17d0519762\"\u003e\u003ccode\u003e38811dd\u003c/code\u003e\u003c/a\u003e Detect shell-script Python executables in ScriptMaker shebangs (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/144\"\u003e#144\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/06ddb5d3bfc4deaa8ff46a938c00b5007baf9ade\"\u003e\u003ccode\u003e06ddb5d\u003c/code\u003e\u003c/a\u003e Compare numeric prerelease identifiers without a digit limit (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e54dd8c87b8cafafc2a09f334cdeb96d16e67760\"\u003e\u003ccode\u003ee54dd8c\u003c/code\u003e\u003c/a\u003e Raise the original error when a launcher can't be written (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c6270e3702ff500d95db3d61d99d65e2d46ac1dc\"\u003e\u003ccode\u003ec6270e3\u003c/code\u003e\u003c/a\u003e Fix NormalizedVersion gaps found by comparison with packaging (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/271\"\u003e#271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/5b3092bae41b2f6cd7540aba467d9e033022af78\"\u003e\u003ccode\u003e5b3092b\u003c/code\u003e\u003c/a\u003e Search export entries in linear time (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.4.3...0.4.4\"\u003ecompar...\n\n_Description has been truncated_","html_url":"https://github.com/DataBoar/data-boar/pull/2131","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataBoar%2Fdata-boar/issues/2131","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2131/packages"}},{"old_version":"0.143.3","new_version":"0.154.0","update_type":"minor","path":"/docker/core-lock","pr_created_at":"2026-10-23T15:51:12.000Z","version_change":"0.143.3 → 0.154.0","issue":{"uuid":"6000988847","node_id":"PR_kwDOVHtNHM8AAAABKSgqvw","number":342,"state":"closed","title":"build(deps): bump the pip-lock-minor-patch group in /docker/core-lock with 4 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-23T22:18:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-23T15:51:12.000Z","updated_at":"2026-10-23T22:18:58.000Z","time_to_close":23254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-lock-minor-patch","update_count":4,"packages":[{"name":"fastapi","old_version":"0.143.3","new_version":"0.154.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"setuptools","old_version":"84.0.0","new_version":"84.2.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"starlette","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"websockets","old_version":"17.2","new_version":"17.3","repository_url":"https://github.com/python-websockets/websockets"}],"path":"/docker/core-lock","ecosystem":"pip"},"body":"Bumps the pip-lock-minor-patch group in /docker/core-lock with 4 updates: [fastapi](https://github.com/fastapi/fastapi), [setuptools](https://github.com/pypa/setuptools), [starlette](https://github.com/Kludex/starlette) and [websockets](https://github.com/python-websockets/websockets).\n\nUpdates `fastapi` from 0.143.3 to 0.154.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.154.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add Pydantic validation options to request parameters. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16542\"\u003e#16542\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.153.0\u003c/h2\u003e\n\u003cp\u003eUnions of form models now apply the same browser form handling as individual models. Empty scalar fields use defaults or produce missing-field errors, empty list items are preserved, omitted boolean fields become \u003ccode\u003eFalse\u003c/code\u003e, and unselected files are treated as missing. JSON request bodies are unchanged.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Apply browser form handling to unions of Pydantic models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16540\"\u003e#16540\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.152.0\u003c/h2\u003e\n\u003cp\u003eValidation errors for header parameter models now report the HTTP header name, such as \u003ccode\u003eint-val\u003c/code\u003e, instead of the Python field name, \u003ccode\u003eint_val\u003c/code\u003e. Explicit aliases, \u003ccode\u003eHeader(convert_underscores=False)\u003c/code\u003e, and Pydantic models with \u003ccode\u003eloc_by_alias=False\u003c/code\u003e keep their existing behavior.\u003c/p\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix header model validation errors to report HTTP header names. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16538\"\u003e#16538\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.151.0\u003c/h2\u003e\n\u003cp\u003eJSON request bodies now distinguish an explicit \u003ccode\u003enull\u003c/code\u003e from an omitted value. For individual \u003ccode\u003eBody\u003c/code\u003e parameters, \u003ccode\u003enull\u003c/code\u003e is validated as \u003ccode\u003eNone\u003c/code\u003e: nullable types accept it, and non-nullable types reject it even when a default is defined. Defaults and default factories apply only when the value is omitted. This applies both to parameters inside JSON objects and to parameters representing the entire body. Clients that used \u003ccode\u003enull\u003c/code\u003e to request a default should omit the value instead.\u003c/p\u003e\n\u003cp\u003eWhen a JSON object is expected because of \u003ccode\u003eBody(embed=True)\u003c/code\u003e or multiple body parameters, sending \u003ccode\u003enull\u003c/code\u003e as the entire body now returns a validation error.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Distinguish JSON null from omitted body values. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16536\"\u003e#16536\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.150.0\u003c/h2\u003e\n\u003cp\u003eWhen no file is selected, browsers submit a file part with an empty filename and empty content. FastAPI now treats this as missing: required file fields return a validation error, and fields with defaults or default factories use them. Unselected inputs are ignored in lists of files. Named zero-byte files are still accepted.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat unselected browser file inputs as missing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16534\"\u003e#16534\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.149.0\u003c/h2\u003e\n\u003cp\u003eBrowsers submit empty text inputs as empty strings (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e). FastAPI now treats empty scalar form values as missing in form models, matching individual \u003ccode\u003eForm\u003c/code\u003e parameters. Required fields return a validation error. Fields with defaults or default factories use them and remain unset in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eEmpty strings inside lists are preserved. Omitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e. JSON requests and direct Pydantic validation are unchanged.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat empty scalar values as missing in form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16529\"\u003e#16529\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.148.0\u003c/h2\u003e\n\u003cp\u003eDefaults for omitted \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, and \u003ccode\u003eForm\u003c/code\u003e parameters and model fields are no longer treated as user input. Defaults are not validated unless \u003ccode\u003evalidate_default=True\u003c/code\u003e is enabled. If you rely on validators running for omitted values, enable default validation with \u003ccode\u003eField(validate_default=True)\u003c/code\u003e for model fields or, for example, \u003ccode\u003eQuery(validate_default=True)\u003c/code\u003e for individual parameters. \u003ccode\u003eBody(validate_default=True)\u003c/code\u003e is now honored too.\u003c/p\u003e\n\u003cp\u003eFor parameter models, applying a default no longer marks a field as explicitly set, so \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e excludes it. Default factories run once, and validation errors no longer include injected defaults in \u003ccode\u003einput\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOmitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e and count as explicitly set.\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/fastapi/fastapi/commit/6f288521eb6bd52dfcdfd0b0fc3a1e0f05892331\"\u003e\u003ccode\u003e6f28852\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.154.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16544\"\u003e#16544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/14630ed1b5c5a11264358374ecbaa6f426e19bc3\"\u003e\u003ccode\u003e14630ed\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/597b5a7c82aafbca5510f42120dd033c91980630\"\u003e\u003ccode\u003e597b5a7\u003c/code\u003e\u003c/a\u003e ✨ Add Pydantic validation options to request parameters (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16542\"\u003e#16542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8ee0e7e96baf68a02212199d0d64153945b701ba\"\u003e\u003ccode\u003e8ee0e7e\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.153.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16541\"\u003e#16541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e985e93c0868f0cf0e44cdf44132c2a0d7eb922b\"\u003e\u003ccode\u003ee985e93\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fef9257394e2d3037a38045d4f8f86f0259e6ffd\"\u003e\u003ccode\u003efef9257\u003c/code\u003e\u003c/a\u003e 🐛 Apply browser form handling to unions of Pydantic models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16540\"\u003e#16540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/993899cc2021daec7ba170c7ee9bcefd45e8db43\"\u003e\u003ccode\u003e993899c\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.152.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16539\"\u003e#16539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b0cec3b3f53825d254c505cfa12c66f433f41d98\"\u003e\u003ccode\u003eb0cec3b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5ef18bfe8e9d098866ccb232f4290e42b9440ae7\"\u003e\u003ccode\u003e5ef18bf\u003c/code\u003e\u003c/a\u003e 🐛 Fix header model validation errors to report HTTP header names (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16538\"\u003e#16538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/051bdfe2da49eb2ee45c9a0d36e22c2b1c94ac4e\"\u003e\u003ccode\u003e051bdfe\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.151.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16537\"\u003e#16537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.3...0.154.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `setuptools` from 84.0.0 to 84.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev84.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for building abi3t extensions and abi3.abi3t wheels on Python\n3.15 and newer. See :pep:\u003ccode\u003e803\u003c/code\u003e and the \u003ccode\u003ePython 3.15 \u0026quot;What's New\u0026quot; entry \u0026lt;https://docs.python.org/3.15/whatsnew/3.15.html#pep-803-abi3t-stable-abi-for-free-threaded-builds\u0026gt;\u003c/code\u003e_\nfor more details. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5193\"\u003e#5193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated vendored packaging version to 26.3, which adds support for the\n\u003ccode\u003eabi3t\u003c/code\u003e tag from :pep:\u003ccode\u003e803\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5361\"\u003e#5361\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse target sysconfig data for stable-ABI extension filenames. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5351\"\u003e#5351\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev84.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools.archive_util\u003c/code\u003e now raises the new \u003ccode\u003eUnsafeMember\u003c/code\u003e exception when\nan archive member would be extracted outside of the extraction directory,\nwhere previously such a member was silently skipped. Aborting makes a\nmalicious or malformed archive visible to the caller instead of yielding a\nquietly incomplete extraction, and matches the behavior of the standard\nlibrary's \u003ccode\u003etarfile\u003c/code\u003e extraction filters.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eWheel.install_as_egg\u003c/code\u003e no longer creates namespace package directories\noutside of the destination egg directory. Entries in a wheel's\n\u003ccode\u003enamespace_packages.txt\u003c/code\u003e were split on \u003ccode\u003e.\u003c/code\u003e and passed straight to\n\u003ccode\u003eos.path.join\u003c/code\u003e, so an entry that was absolute, drive-qualified, or UNC\ndiscarded the destination and placed an \u003ccode\u003e__init__.py\u003c/code\u003e at a path chosen by\nthe wheel. Namespace entries are now validated as dotted module names on\nevery platform -- see GHSA-xmj3-9gf7-h52w.\u003c/p\u003e\n\u003cp\u003eThis code path is reached only by the deprecated \u003ccode\u003esetup_requires\u003c/code\u003e\nmechanism when \u003ccode\u003esetup()\u003c/code\u003e is invoked outside a PEP 517 frontend; the\nsetuptools build backend never reaches it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003esetuptools.archive_util\u003c/code\u003e no longer extracts archive members outside of the\nrequested extraction directory. Both the tar and zip formats specify \u003ccode\u003e/\u003c/code\u003e as\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/pypa/setuptools/commit/301e27a484f17e175acf6b692fccc634f9a20c49\"\u003e\u003ccode\u003e301e27a\u003c/code\u003e\u003c/a\u003e Bump version: 84.1.0 → 84.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/39a7c2ecd80bb1c393b3867d9673027d490322cb\"\u003e\u003ccode\u003e39a7c2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5193\"\u003e#5193\u003c/a\u003e from ngoldbaum/abi3.abi3t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/7b5dea7c3372f0958f5cf689ba918f0ebcc5a698\"\u003e\u003ccode\u003e7b5dea7\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into abi3.abi3t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b3985b6d08f595de4bd123e86f83d1680c2e3e0b\"\u003e\u003ccode\u003eb3985b6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5352\"\u003e#5352\u003c/a\u003e from jameshilliard/fix/abi3-target-platform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/0c3f3c44592ba8273ffd649d70d5a64220a3d1cc\"\u003e\u003ccode\u003e0c3f3c4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5361\"\u003e#5361\u003c/a\u003e from pypa/feature/vendor-packaging-26.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/77b7ace0aaf660beeb9b3f9da4aabf21cbcf3fa9\"\u003e\u003ccode\u003e77b7ace\u003c/code\u003e\u003c/a\u003e Bump version: 84.0.0 → 84.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/97b75e6e66b446f23886fe409ab19fc805ee42fb\"\u003e\u003ccode\u003e97b75e6\u003c/code\u003e\u003c/a\u003e Use target sysconfig for platform-qualified stable-ABI suffixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/4b0293987b195aa9f7a7222148fdba0d15d461f2\"\u003e\u003ccode\u003e4b02939\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/56bc40e36874fb22c4da66dc25c145ce9e9bbfcd\"\u003e\u003ccode\u003e56bc40e\u003c/code\u003e\u003c/a\u003e Update vendored packaging version to 26.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/e66004c64eaf6cf2f8c53ccdfac75cf7abce7ccf\"\u003e\u003ccode\u003ee66004c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5329\"\u003e#5329\u003c/a\u003e from pypa/fix/wheel-namespace-path-escape\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v84.0.0...v84.2.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.8.0 to 1.9.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.9.0\u003c/h2\u003e\n\u003cp\u003eThis release streams \u003ccode\u003eTestClient\u003c/code\u003e response bodies, so \u003ccode\u003eclient.stream()\u003c/code\u003e returns before the application finishes. It also escapes path delimiters when building URLs, matches host names case-insensitively, and keeps every existing \u003ccode\u003eVary\u003c/code\u003e header.\u003c/p\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStream \u003ccode\u003eTestClient\u003c/code\u003e response bodies, so \u003ccode\u003eclient.stream()\u003c/code\u003e returns before the application finishes. Closing an unfinished streamed response now cancels the application \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3491\"\u003e#3491\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePercent-encode \u003ccode\u003e?\u003c/code\u003e, \u003ccode\u003e#\u003c/code\u003e, \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in the request path when building \u003ccode\u003erequest.url\u003c/code\u003e, and \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in \u003ccode\u003eurl_path_for\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3671\"\u003e#3671\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUse the byte length for \u003ccode\u003eContent-Length\u003c/code\u003e when the response body is a typed or multidimensional \u003ccode\u003ememoryview\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3622\"\u003e#3622\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eHEAD\u003c/code\u003e in the \u003ccode\u003eAllow\u003c/code\u003e header of \u003ccode\u003eHTTPEndpoint\u003c/code\u003e 405 responses when \u003ccode\u003eGET\u003c/code\u003e is defined \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3585\"\u003e#3585\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eMatch host names case-insensitively in \u003ccode\u003eHost\u003c/code\u003e routing and \u003ccode\u003eTrustedHostMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3542\"\u003e#3542\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePreserve every existing \u003ccode\u003eVary\u003c/code\u003e header in \u003ccode\u003eMutableHeaders.add_vary_header()\u003c/code\u003e, used by \u003ccode\u003eGZipMiddleware\u003c/code\u003e and \u003ccode\u003eSessionMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3675\"\u003e#3675\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/starlette/compare/1.8.0...1.9.0\"\u003e1.8.0...1.9.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/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.0 (October 18, 2026)\u003c/h2\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eStream \u003ccode\u003eTestClient\u003c/code\u003e response bodies, so \u003ccode\u003eclient.stream()\u003c/code\u003e returns before the application finishes. Closing an unfinished streamed response now cancels the application \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3491\"\u003e#3491\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePercent-encode \u003ccode\u003e?\u003c/code\u003e, \u003ccode\u003e#\u003c/code\u003e, \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in the request path when building \u003ccode\u003erequest.url\u003c/code\u003e, and \u003ccode\u003e\\\u003c/code\u003e and a leading \u003ccode\u003e//\u003c/code\u003e in \u003ccode\u003eurl_path_for\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3671\"\u003e#3671\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUse the byte length for \u003ccode\u003eContent-Length\u003c/code\u003e when the response body is a typed or multidimensional \u003ccode\u003ememoryview\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3622\"\u003e#3622\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eHEAD\u003c/code\u003e in the \u003ccode\u003eAllow\u003c/code\u003e header of \u003ccode\u003eHTTPEndpoint\u003c/code\u003e 405 responses when \u003ccode\u003eGET\u003c/code\u003e is defined \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3585\"\u003e#3585\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eMatch host names case-insensitively in \u003ccode\u003eHost\u003c/code\u003e routing and \u003ccode\u003eTrustedHostMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3542\"\u003e#3542\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePreserve every existing \u003ccode\u003eVary\u003c/code\u003e header in \u003ccode\u003eMutableHeaders.add_vary_header()\u003c/code\u003e, used by \u003ccode\u003eGZipMiddleware\u003c/code\u003e and \u003ccode\u003eSessionMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3675\"\u003e#3675\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/starlette/commit/1840c9dd3bda5bd0beb5a26b2a7bc797a0f91a2a\"\u003e\u003ccode\u003e1840c9d\u003c/code\u003e\u003c/a\u003e Version 1.9.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/750dc33efe2a3076fc6a69235b02a331c467bc09\"\u003e\u003ccode\u003e750dc33\u003c/code\u003e\u003c/a\u003e Preserve all \u003ccode\u003eVary\u003c/code\u003e headers in \u003ccode\u003eMutableHeaders.add_vary_header\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/414af4f6b95cbf1cbc43746dc84058a3394e989c\"\u003e\u003ccode\u003e414af4f\u003c/code\u003e\u003c/a\u003e Remove unmaintained packages from the third-party packages page (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/d4df01aab4d1a71c8b8db010843f6453efaaaf7c\"\u003e\u003ccode\u003ed4df01a\u003c/code\u003e\u003c/a\u003e Add adminsite to the third-party packages (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/1766228b4eb5462efd552f3364656e1e0a5b0180\"\u003e\u003ccode\u003e1766228\u003c/code\u003e\u003c/a\u003e Match host names case-insensitively in \u003ccode\u003eHost\u003c/code\u003e routing and `TrustedHostMiddlew...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/a579222b161e5407cd311c32648ed7c845bda4a4\"\u003e\u003ccode\u003ea579222\u003c/code\u003e\u003c/a\u003e Include \u003ccode\u003eHEAD\u003c/code\u003e in the \u003ccode\u003eAllow\u003c/code\u003e header of \u003ccode\u003eHTTPEndpoint\u003c/code\u003e 405 responses (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3585\"\u003e#3585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/6b11cd7df52dc80a5565ccde79d319729d84e92c\"\u003e\u003ccode\u003e6b11cd7\u003c/code\u003e\u003c/a\u003e Honor streaming responses in TestClient (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3491\"\u003e#3491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/b7901fb908f0c6c3b8b6e495517cea6b2e77e66b\"\u003e\u003ccode\u003eb7901fb\u003c/code\u003e\u003c/a\u003e Use byte length for typed \u003ccode\u003ememoryview\u003c/code\u003e response bodies (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/3214cd069e1b3c11628d172df387ded973934db2\"\u003e\u003ccode\u003e3214cd0\u003c/code\u003e\u003c/a\u003e Escape path delimiters and leading \u003ccode\u003e//\u003c/code\u003e when building URLs (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3671\"\u003e#3671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.8.0...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websockets` from 17.2 to 17.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-websockets/websockets/releases\"\u003ewebsockets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e17.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://websockets.readthedocs.io/en/stable/project/changelog.html\"\u003ehttps://websockets.readthedocs.io/en/stable/project/changelog.html\u003c/a\u003e for details.\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/python-websockets/websockets/commit/86a1ad5b0009e801e451f1be1da2a077e2dd2471\"\u003e\u003ccode\u003e86a1ad5\u003c/code\u003e\u003c/a\u003e Release version 17.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/5cc46ca2bedfb9183fc9c4523f79aeba620b9ab5\"\u003e\u003ccode\u003e5cc46ca\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 4.2.1 to 4.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/f6702a5b9bd6a95edd2cb8a5c3621f68fabe52d5\"\u003e\u003ccode\u003ef6702a5\u003c/code\u003e\u003c/a\u003e Deindent more test assertions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7fe5d60cf681e2f083b2b9f59c7094aa4fa88031\"\u003e\u003ccode\u003e7fe5d60\u003c/code\u003e\u003c/a\u003e Deindent assertions on raised exceptions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/8549c240e4c36a2a6002ef157abfe41bdc92c19e\"\u003e\u003ccode\u003e8549c24\u003c/code\u003e\u003c/a\u003e Support arbitrary data in basic auth credentials.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/a8a898b63e6a1fa89b49d9cae716b998480887bb\"\u003e\u003ccode\u003ea8a898b\u003c/code\u003e\u003c/a\u003e Support UTF-8 passwords in server basic auth.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/bc17da4841b32dafdc036c0a35f7ccd2fc5d9b23\"\u003e\u003ccode\u003ebc17da4\u003c/code\u003e\u003c/a\u003e Parse integers strictly in the HTTP protocol.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/7f567174457f2620c274f11737b1b0129ec6e9b0\"\u003e\u003ccode\u003e7f56717\u003c/code\u003e\u003c/a\u003e Increase timeout for running tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/47e292698aa58ad35877a4ddf07cd9eacef35e38\"\u003e\u003ccode\u003e47e2926\u003c/code\u003e\u003c/a\u003e Simplify issue template and fix typo.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-websockets/websockets/commit/77875e189abc69c1c8e2beae0bd0d6bd799cc505\"\u003e\u003ccode\u003e77875e1\u003c/code\u003e\u003c/a\u003e Fix intermittent errors on free-threaded Python.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-websockets/websockets/compare/17.2...17.3\"\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/noomesh/noomesh/pull/342","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/noomesh%2Fnoomesh/issues/342","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/342/packages"}},{"old_version":"0.143.0","new_version":"0.143.2","update_type":"patch","path":"/fast_api_voter","pr_created_at":"2026-10-23T07:00:18.000Z","version_change":"0.143.0 → 0.143.2","issue":{"uuid":"5993439340","node_id":"PR_kwDOOBrOOM8AAAABKMciPQ","number":990,"state":"open","title":"fix(deps): Bump the patch-and-minor group in /fast_api_voter with 21 updates","user":"dependabot[bot]","labels":["dependencies","python","queued","security"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-23T07:00:18.000Z","updated_at":"2026-10-24T02:37:57.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"fix(deps): Bump","group_name":"patch-and-minor","update_count":21,"packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.2","repository_url":"https://github.com/fastapi/fastapi"},{"name":"httptools","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"numpy","old_version":"2.5.3","new_version":"2.5.4","repository_url":"https://github.com/numpy/numpy"},{"name":"pydantic","old_version":"2.14.0","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":"sentry-sdk","old_version":"2.71.0","new_version":"2.72.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"starlette","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"wrapt","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"aiohttp","old_version":"3.14.4","new_version":"3.14.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"hypothesis","old_version":"6.168.5","new_version":"6.170.0","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.16.10","new_version":"0.17.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"schemathesis","old_version":"4.30.0","new_version":"4.31.1","repository_url":"https://github.com/schemathesis/schemathesis"},{"name":"z3-solver","old_version":"5.1.0.0","new_version":"5.3.1.0","repository_url":"https://github.com/Z3Prover/z3"},{"name":"ast-serialize","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"filelock","old_version":"4.0.12","new_version":"4.2.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"jedi","old_version":"0.20.0","new_version":"0.20.1","repository_url":"https://github.com/davidhalter/jedi"},{"name":"markdown","old_version":"3.11","new_version":"3.11.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"narwhals","old_version":"2.26.0","new_version":"2.27.1","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"platformdirs","old_version":"4.12.4","new_version":"4.13.3","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"tomlkit","old_version":"0.15.1","new_version":"0.15.2","repository_url":"https://github.com/python-poetry/tomlkit"}],"path":"/fast_api_voter","ecosystem":"pip"},"body":"Bumps the patch-and-minor group in /fast_api_voter with 21 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.143.0` | `0.143.2` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.8.0` | `0.9.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.5.3` | `2.5.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.14.0` | `2.14.1` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.15.0` | `2.16.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.71.0` | `2.72.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.7.0` | `1.8.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.5.0` | `2.5.1` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.4` | `3.14.5` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.168.5` | `6.170.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.10` | `0.17.1` |\n| [schemathesis](https://github.com/schemathesis/schemathesis) | `4.30.0` | `4.31.1` |\n| [z3-solver](https://github.com/Z3Prover/z3) | `5.1.0.0` | `5.3.1.0` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.12.1` | `0.13.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `4.0.12` | `4.2.0` |\n| [jedi](https://github.com/davidhalter/jedi) | `0.20.0` | `0.20.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.11` | `3.11.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.26.0` | `2.27.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.12.4` | `4.13.3` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.6.0` | `1.7.0` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.15.1` | `0.15.2` |\n\nUpdates `fastapi` from 0.143.0 to 0.143.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.143.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0c83cfae23d8068c9a3a5151ae69cac2e4e894d9\"\u003e\u003ccode\u003e0c83cfa\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6955ff746c204465ccbc8d648d86f5545a3bb55f\"\u003e\u003ccode\u003e6955ff7\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for ja (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16499\"\u003e#16499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aa1c3bac294c51b99728ef155d99569047598e04\"\u003e\u003ccode\u003eaa1c3ba\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f6f33b2cb225ce981ddfefcb869c000d945062c6\"\u003e\u003ccode\u003ef6f33b2\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16501\"\u003e#16501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0474a7e88d7f294cc0985bea0913bbafbb7a8a66\"\u003e\u003ccode\u003e0474a7e\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.143.0...0.143.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httptools` 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/MagicStack/httptools/releases\"\u003ehttptools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade llhttp to 9.4.3 (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/153\"\u003e#153\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in eab7f640)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuild CPython 3.15 wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/148\"\u003e#148\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in b03516d9)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd RISC-V 64-bit wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/137\"\u003e#137\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/gounthar\"\u003e\u003ccode\u003e@​gounthar\u003c/code\u003e\u003c/a\u003e in 1c6946dc)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Windows ARM64 support in CI (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/141\"\u003e#141\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/Harishmcw\"\u003e\u003ccode\u003e@​Harishmcw\u003c/code\u003e\u003c/a\u003e in 5a2bb07c)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBuild PPC64LE wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/143\"\u003e#143\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/Sunidhi-Gaonkar1\"\u003e\u003ccode\u003e@​Sunidhi-Gaonkar1\u003c/code\u003e\u003c/a\u003e in ff08b99d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModernize test and release workflows (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/152\"\u003e#152\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in d80e26fe)\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/MagicStack/httptools/commit/104198474662752f4f4845c79007100829aff442\"\u003e\u003ccode\u003e1041984\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/154\"\u003e#154\u003c/a\u003e from MagicStack/release-0.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/aa5fbf941f2e58e0b3edc408b01eb49aadcca414\"\u003e\u003ccode\u003eaa5fbf9\u003c/code\u003e\u003c/a\u003e httptools v0.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/eab7f6403887a8881ffca3a65095c317e03b02ea\"\u003e\u003ccode\u003eeab7f64\u003c/code\u003e\u003c/a\u003e Upgrade llhttp to 9.4.3 (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/d80e26fe6dcc181ebd65e7a3da17448ccc5abdf4\"\u003e\u003ccode\u003ed80e26f\u003c/code\u003e\u003c/a\u003e Modernize test and release workflows (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/152\"\u003e#152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/b03516d983ac04cec750ece237cbf07cefb87900\"\u003e\u003ccode\u003eb03516d\u003c/code\u003e\u003c/a\u003e Build CPython 3.15 wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/ff08b99df42e957c5cfb9cddeb85ffa8378e09ca\"\u003e\u003ccode\u003eff08b99\u003c/code\u003e\u003c/a\u003e Build PPC64LE wheels (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/5a2bb07cc2be05558d692adff10e223a1e6c3bf3\"\u003e\u003ccode\u003e5a2bb07\u003c/code\u003e\u003c/a\u003e Add Windows ARM64 support in CI (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/httptools/commit/1c6946dccdffcb7818c19ddd8bf73123b4ccd297\"\u003e\u003ccode\u003e1c6946d\u003c/code\u003e\u003c/a\u003e ci: add riscv64 to wheel build matrix (\u003ca href=\"https://redirect.github.com/MagicStack/httptools/issues/137\"\u003e#137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/MagicStack/httptools/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 `numpy` from 2.5.3 to 2.5.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.4 (Oct 10,  2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.5.4 Release Notes\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eReleased on 2026-10-10.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eNumPy 2.5.4 is a patch release that fixes bugs discovered after the 2.5.3\nrelease. Highlights are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMany typing fixes and improvements,\u003c/li\u003e\n\u003cli\u003eA workaround for the MSVC 19.51 bug, see below.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release supports Python versions 3.12-3.15.\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003enumpy.linalg.svd\u003c/code\u003e and \u003ccode\u003enumpy.linalg.lstsq\u003c/code\u003e now raise for inputs containing\ninfinities instead of returning garbage results.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed hangs in \u003ccode\u003enumpy.linalg.svd\u003c/code\u003e and \u003ccode\u003enumpy.linalg.lstsq\u003c/code\u003e for certain inputs\ncontaining infinities for recent versions of some LAPACK implementations.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003enumpy.linalg.cond\u003c/code\u003e now handles non-finite inputs more consistently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/32593\"\u003egh-32593\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eStringDType hashing with NaN sentinels\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eStringDType\u003c/code\u003e instances with equivalent floating-point NaN sentinels now\nhave equal hashes. Previously, distinct NaN objects could produce equal\ndtype instances with different hashes, causing dictionary lookups and set\ndeduplication to fail.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/32563\"\u003egh-32563\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eMaskedArray\u003c/code\u003e resets a fill_value that cannot be represented in a new dtype\u003c/h3\u003e\n\u003cp\u003eA fill_value copied from a source array is now reset to the default fill_value\nfor the new dtype when it cannot be represented in that dtype. Previously the\ncopied value could be stale: ufuncs that change dtype left the result holding a\nfill_value typed for the old dtype, which raised a \u003ccode\u003eTypeError\u003c/code\u003e only when\nsomething later validated it (such as \u003ccode\u003e.view()\u003c/code\u003e), and a floating point\nfill_value that overflows an integer dtype was kept as an out-of-range value\ntogether with a \u003ccode\u003eRuntimeWarning\u003c/code\u003e. Both now fall back to the default,\nincluding when a masked array is passed to \u003ccode\u003eMaskedArray\u003c/code\u003e with a different\n\u003ccode\u003edtype\u003c/code\u003e. A fill_value given explicitly by the user is still validated and\nraises as before. This can now raise a \u003ccode\u003eComplexWarning\u003c/code\u003e if the fill_value is\ncomplex and the new dtype is real.\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/numpy/numpy/commit/a3d0ef1df045b858e68115001fdabc930bb3b68c\"\u003e\u003ccode\u003ea3d0ef1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32969\"\u003e#32969\u003c/a\u003e from charris/prepare-2.5.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/087b5367c84b5296c32c26c415438d87d3888586\"\u003e\u003ccode\u003e087b536\u003c/code\u003e\u003c/a\u003e MAINT: Make OpenBLAS version check use 2.5.x branch.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/91acd879242a679604579895d490c26f864a4b03\"\u003e\u003ccode\u003e91acd87\u003c/code\u003e\u003c/a\u003e REL: Prepare for the NumPy 2.5.4 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/9cc555bae07244551829c3a4eb7a635bef6345b3\"\u003e\u003ccode\u003e9cc555b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32956\"\u003e#32956\u003c/a\u003e from charris/backport-typing-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/e04b972a306136b8ac9219be199948badafa3475\"\u003e\u003ccode\u003ee04b972\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003edtype[void].names\u003c/code\u003e: allow setting with list (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32943\"\u003e#32943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/d9299693d20c3fd1aa83b9464d074632cf59aaac\"\u003e\u003ccode\u003ed929969\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003etimedelta64\u003c/code\u003e: \u003ccode\u003edatetime.timedelta\u003c/code\u003e construction isn't deprecated (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/839467fdbcc1d68b68f4fe2a61d3387107c78394\"\u003e\u003ccode\u003e839467f\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003ema.getmaskarray\u003c/code\u003e: accept array-likes (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32934\"\u003e#32934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/64b721b23f51543ed9316a5fd21a48734760b429\"\u003e\u003ccode\u003e64b721b\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003epolynomial\u003c/code\u003e: accept scalar \u003ccode\u003ecoef\u003c/code\u003e in the poly constructors (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32931\"\u003e#32931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/06b7ad226e41b71919b2d35c50063998eced0b9d\"\u003e\u003ccode\u003e06b7ad2\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003evoid\u003c/code\u003e: accept any \u003ccode\u003edtype: str\u003c/code\u003e in constructor calls (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32928\"\u003e#32928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numpy/numpy/commit/c7bcd2c0aaca732b87575829cc61508076de1af5\"\u003e\u003ccode\u003ec7bcd2c\u003c/code\u003e\u003c/a\u003e TYP: \u003ccode\u003eplace\u003c/code\u003e: widen \u003ccode\u003emask\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/32926\"\u003e#32926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numpy/numpy/compare/v2.5.3...v2.5.4\"\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 `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 `sentry-sdk` from 2.71.0 to 2.72.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.72.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003euser_agent.original\u003c/code\u003e for inbound filters 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/7794\"\u003e#7794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7781\"\u003e#7781\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eServiceExtension\u003c/code\u003e class 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/7536\"\u003e#7536\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response, retry, and error span attributes 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/7499\"\u003e#7499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd common OTel AWS client attributes 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/7481\"\u003e#7481\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eWsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7793\"\u003e#7793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7780\"\u003e#7780\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(aiohttp) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7785\"\u003e#7785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp,sanic,tornado) Add \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7795\"\u003e#7795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7783\"\u003e#7783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7787\"\u003e#7787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(types) Export DataCollectionUserOptions from sentry_sdk.types 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/7957\"\u003e#7957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter IPv6 localhost detection 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/7786\"\u003e#7786\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eTrace the complete botocore client-call lifecycle 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/7538\"\u003e#7538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFinish \u003ccode\u003eStreamingBody\u003c/code\u003e span correctly 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/7540\"\u003e#7540\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Return \u003ccode\u003eNone\u003c/code\u003e from \u003ccode\u003ecapture_checkin\u003c/code\u003e when nothing is sent by \u003ca href=\"https://github.com/HardMax71\"\u003e\u003ccode\u003e@​HardMax71\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7868\"\u003e#7868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(scrubber) Scrub request bodies that are JSON arrays by \u003ca href=\"https://github.com/Om-singhaI\"\u003e\u003ccode\u003e@​Om-singhaI\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7561\"\u003e#7561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix span, metrics, log 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/7933\"\u003e#7933\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDeps\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7848\"\u003e#7848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7484\"\u003e#7484\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\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.72.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003euser_agent.original\u003c/code\u003e for inbound filters 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/7794\"\u003e#7794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7781\"\u003e#7781\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eServiceExtension\u003c/code\u003e class 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/7536\"\u003e#7536\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response, retry, and error span attributes 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/7499\"\u003e#7499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd common OTel AWS client attributes 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/7481\"\u003e#7481\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eWsgi\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7793\"\u003e#7793\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7780\"\u003e#7780\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(aiohttp) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7785\"\u003e#7785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp,sanic,tornado) Add \u003ccode\u003euser_agent.original\u003c/code\u003e attr for inbound filters 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/7795\"\u003e#7795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7783\"\u003e#7783\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Add \u003ccode\u003esentry.is_localhost\u003c/code\u003e for inbound filters 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/7787\"\u003e#7787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(types) Export DataCollectionUserOptions from sentry_sdk.types 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/7957\"\u003e#7957\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter IPv6 localhost detection 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/7786\"\u003e#7786\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eBoto3\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eTrace the complete botocore client-call lifecycle 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/7538\"\u003e#7538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFinish \u003ccode\u003eStreamingBody\u003c/code\u003e span correctly 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/7540\"\u003e#7540\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Return \u003ccode\u003eNone\u003c/code\u003e from \u003ccode\u003ecapture_checkin\u003c/code\u003e when nothing is sent by \u003ca href=\"https://github.com/HardMax71\"\u003e\u003ccode\u003e@​HardMax71\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7868\"\u003e#7868\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(scrubber) Scrub request bodies that are JSON arrays by \u003ca href=\"https://github.com/Om-singhaI\"\u003e\u003ccode\u003e@​Om-singhaI\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7561\"\u003e#7561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix span, metrics, log 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/7933\"\u003e#7933\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDeps\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7848\"\u003e#7848\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7484\"\u003e#7484\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\u003c/h4\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/getsentry/sentry-python/commit/9d245140804fb0238bf9718f53a53ee5b30f0f8d\"\u003e\u003ccode\u003e9d24514\u003c/code\u003e\u003c/a\u003e release: 2.72.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/4dc1d72fd49cf2c76b2b7a316d06f056da638150\"\u003e\u003ccode\u003e4dc1d72\u003c/code\u003e\u003c/a\u003e fix: Fix span, metrics, log client reports (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7933\"\u003e#7933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/578039961170fc5b27ab813861a5adb698372cff\"\u003e\u003ccode\u003e5780399\u003c/code\u003e\u003c/a\u003e feat(types): Export DataCollectionUserOptions from sentry_sdk.types (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7957\"\u003e#7957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/1ca032605a337eb1dee696b594c28d7620e93ddf\"\u003e\u003ccode\u003e1ca0326\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7848\"\u003e#7848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/f5bf69bc6abebccba900b4d2606995fdfdf87a5e\"\u003e\u003ccode\u003ef5bf69b\u003c/code\u003e\u003c/a\u003e ci(mypy): Bump version to 2.4.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7937\"\u003e#7937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/02210fa61b4fe2f5de849fa10984cd576118fafe\"\u003e\u003ccode\u003e02210fa\u003c/code\u003e\u003c/a\u003e ci(openai-agents): Bump version for type checking to 0.23.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7935\"\u003e#7935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/fcccb7b389adde78c05d73861d766d93dc4b85d0\"\u003e\u003ccode\u003efcccb7b\u003c/code\u003e\u003c/a\u003e ci(strawberry-graphql): Bump version for type checking to 0.332.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7936\"\u003e#7936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7cb80948cbdefb10831740c23b49e56e348532a5\"\u003e\u003ccode\u003e7cb8094\u003c/code\u003e\u003c/a\u003e chore: Deprecate \u003ccode\u003eai.monitoring.record_token_usage()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7918\"\u003e#7918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/1f4ba26cdd92ab9fe877af7b511ddff02e8bd8c5\"\u003e\u003ccode\u003e1f4ba26\u003c/code\u003e\u003c/a\u003e chore: Deprecate \u003ccode\u003esend_default_pii\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7694\"\u003e#7694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/4b9d329880aeb696d88d735fb01956b06a46e923\"\u003e\u003ccode\u003e4b9d329\u003c/code\u003e\u003c/a\u003e refactor: move FastAPI active thread tracking into Starlette (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7825\"\u003e#7825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.71.0...2.72.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.7.0 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/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.8.0\u003c/h2\u003e\n\u003cp\u003eThis release adds HTTP 103 Early Hints, preserves response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e, and stops \u003ccode\u003eFileResponse\u003c/code\u003e transfers when clients disconnect. Starlette now requires Python 3.11.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.response.start\u003c/code\u003e immediately in \u003ccode\u003eGZipMiddleware\u003c/code\u003e for responses with an existing \u003ccode\u003eContent-Encoding\u003c/code\u003e, status \u003ccode\u003e206\u003c/code\u003e, or an excluded content type, instead of waiting for the first body chunk \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3631\"\u003e#3631\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eResolve the multipart charset once per request instead of once per field \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3618\"\u003e#3618\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop \u003ccode\u003eFileResponse\u003c/code\u003e transfers when the client disconnects \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3523\"\u003e#3523\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop multipart range responses when the file ends before a range is complete, instead of looping forever \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3583\"\u003e#3583\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eRange\u003c/code\u003e when \u003ccode\u003eIf-Range\u003c/code\u003e contains a weak ETag \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3567\"\u003e#3567\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eAllow: GET, HEAD\u003c/code\u003e in \u003ccode\u003eStaticFiles\u003c/code\u003e \u003ccode\u003e405\u003c/code\u003e responses \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3640\"\u003e#3640\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eClose \u003ccode\u003eRequest.stream()\u003c/code\u003e generators deterministically, avoiding \u0026quot;Exception ignored\u0026quot; errors with stacked \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3628\"\u003e#3628\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eVary: Cookie\u003c/code\u003e when \u003ccode\u003eSession.pop()\u003c/code\u003e removes an existing key \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3186\"\u003e#3186\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003eMax-Age=0\u003c/code\u003e on the session cookie when \u003ccode\u003eSessionMiddleware\u003c/code\u003e uses \u003ccode\u003emax_age=0\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3651\"\u003e#3651\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3617\"\u003e#3617\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/starlette/compare/1.7.0...1.8.0\"\u003e1.7.0...1.8.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/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.8.0 (October 13, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release drops Python 3.10 support and adds HTTP 103 Early Hints.\u003c/p\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.response.start\u003c/code\u003e immediately in \u003ccode\u003eGZipMiddleware\u003c/code\u003e for responses with an existing \u003ccode\u003eContent-Encoding\u003c/code\u003e, status \u003ccode\u003e206\u003c/code\u003e, or an excluded content type, instead of waiting for the first body chunk \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3631\"\u003e#3631\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eResolve the multipart charset once per request instead of once per field \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3618\"\u003e#3618\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop \u003ccode\u003eFileResponse\u003c/code\u003e transfers when the client disconnects \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3523\"\u003e#3523\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop multipart range responses when the file ends before a range is complete, instead of looping forever \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3583\"\u003e#3583\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eRange\u003c/code\u003e when \u003ccode\u003eIf-Range\u003c/code\u003e contains a weak ETag \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3567\"\u003e#3567\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eAllow: GET, HEAD\u003c/code\u003e in \u003ccode\u003eStaticFiles\u003c/code\u003e \u003ccode\u003e405\u003c/code\u003e responses \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3640\"\u003e#3640\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eClose \u003ccode\u003eRequest.stream()\u003c/code\u003e generators deterministically, avoiding \u0026quot;Exception ignored\u0026quot; errors with stacked \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3628\"\u003e#3628\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eVary: Cookie\u003c/code\u003e when \u003ccode\u003eSession.pop()\u003c/code\u003e removes an existing key \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3186\"\u003e#3186\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003eMax-Age=0\u003c/code\u003e on the session cookie when \u003ccode\u003eSessionMiddleware\u003c/code\u003e uses \u003ccode\u003emax_age=0\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3651\"\u003e#3651\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3617\"\u003e#3617\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/starlette/commit/7b2948fe7b7fff28bb018607d54cd4dfa518910e\"\u003e\u003ccode\u003e7b2948f\u003c/code\u003e\u003c/a\u003e Version 1.8.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3660\"\u003e#3660\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/5b544ced7345d8b2315419ecaded4b52bffe6b76\"\u003e\u003ccode\u003e5b544ce\u003c/code\u003e\u003c/a\u003e Send response start immediately when GZipMiddleware cannot compress (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3631\"\u003e#3631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/96d5023c55b29224edb8d684868c49f681d079a9\"\u003e\u003ccode\u003e96d5023\u003c/code\u003e\u003c/a\u003e Emit \u003ccode\u003eMax-Age=0\u003c/code\u003e on session cookie when \u003ccode\u003emax_age=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3651\"\u003e#3651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/0a15da395d13e8eb6ecadeb6f4928d7d7c493fc8\"\u003e\u003ccode\u003e0a15da3\u003c/code\u003e\u003c/a\u003e Include allowed methods in StaticFiles 405 responses (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3640\"\u003e#3640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/ff5b4df55ac4ac625582ecc446c850200c91ae64\"\u003e\u003ccode\u003eff5b4df\u003c/code\u003e\u003c/a\u003e Close \u003ccode\u003eRequest.stream()\u003c/code\u003e generators with \u003ccode\u003eaclosing\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/7cb2f09c1858ea1400afbd355a900ce14d720533\"\u003e\u003ccode\u003e7cb2f09\u003c/code\u003e\u003c/a\u003e Mark sessions as accessed when popping existing keys (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3186\"\u003e#3186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c67ca4eeef171c679074f4ebc579ee5dbd657aa8\"\u003e\u003ccode\u003ec67ca4e\u003c/code\u003e\u003c/a\u003e Add HTTP 103 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/04741d073fb6c3ab5fccad08be8ae7aad1f67e91\"\u003e\u003ccode\u003e04741d0\u003c/code\u003e\u003c/a\u003e Update broken external documentation links (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3621\"\u003e#3621\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/470f986deb9cc3f4475ba0b49ae9f80c380d9fce\"\u003e\u003ccode\u003e470f986\u003c/code\u003e\u003c/a\u003e Correct the documented WebSocket and Request constructor signatures (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/b2e8750b4aaa183553d32a61cf553bef8d406465\"\u003e\u003ccode\u003eb2e8750\u003c/code\u003e\u003c/a\u003e Bracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3617\"\u003e#3617\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.7.0...1.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `wrapt` from 2.5.0 to 2.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/GrahamDumpleton/wrapt/releases\"\u003ewrapt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ewrapt 2.5.1\u003c/h2\u003e\n\u003cp\u003eFull release notes: \u003ca href=\"https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\"\u003ehttps://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eInstall from PyPi (recommended):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install wrapt==2.5.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePyPi uploads follow each GitHub release; if \u003ccode\u003epip\u003c/code\u003e reports the\nversion is unavailable, the matching PyPi upload may not have\nhappened yet.\u003c/p\u003e\n\u003cp\u003ePre-built wheels are provided for a range of Python versions\nand platforms (Linux x86_64/aarch64/riscv64, macOS x86_64 and\narm64, Windows x86_64 and arm64, plus PyPy and free-threaded\nbuilds). The source distribution is also attached together\nwith \u003ccode\u003eSHA256SUMS\u003c/code\u003e for verification.\u003c/p\u003e\n\u003ch2\u003ewrapt 2.5.1rc1\u003c/h2\u003e\n\u003cp\u003eRelease candidate. Release notes for the upcoming\n2.5.1 final (work in progress): \u003ca href=\"https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\"\u003ehttps://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eMay be installable from PyPi:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install wrapt==2.5.1rc1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf \u003ccode\u003epip\u003c/code\u003e reports the version is unavailable, this candidate\neither has not been uploaded yet or is not being published to\nPyPi. Use the attached wheels or build from the source\ndistribution instead:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003etar xf wrapt-2.5.1rc1.tar.gz\ncd wrapt-2.5.1rc1\npip install .\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003ccode\u003eSHA256SUMS\u003c/code\u003e is attached for verification of the archives.\u003c/p\u003e\n\u003ch2\u003ewrapt 2.5.1.dev1\u003c/h2\u003e\n\u003cp\u003eDevelopment snapshot. Not normally published to PyPi\n(occasionally uploaded to exercise the release pipeline).\u003c/p\u003e\n\u003cp\u003eRelease notes for the upcoming 2.5.1 final (work in\nprogress): \u003ca href=\"https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\"\u003ehttps://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePlatform wheels and the source distribution are attached. To\ntest against your Python install, either grab a matching wheel\nor build from the source distribution:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install wrapt-2.5.1.dev1-\u0026lt;python\u0026gt;-\u0026lt;abi\u0026gt;-\u0026lt;platform\u0026gt;.whl\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eor\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/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst\"\u003ewrapt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.5.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugs Fixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA \u003ccode\u003eLazyObjectProxy\u003c/code\u003e created with an \u003ccode\u003einterface\u003c/code\u003e argument that\ndeclared a path-like type, such as \u003ccode\u003eos.PathLike\u003c/code\u003e or \u003ccode\u003epathlib.Path\u003c/code\u003e,\ndid not define the \u003ccode\u003e__fspath__()\u003c/code\u003e special method on the class it\ngenerated. Because \u003ccode\u003eos.fspath()\u003c/code\u003e looks up \u003ccode\u003e__fspath__()\u003c/code\u003e on the type\nof the object, passing such a proxy to \u003ccode\u003eos.fspath()\u003c/code\u003e, the builtin\n\u003ccode\u003eopen()\u003c/code\u003e or other standard library functions accepting paths raised\n\u003ccode\u003eTypeError\u003c/code\u003e before the factory callable had been invoked to create the\nwrapped object. The \u003ccode\u003e__fspath__()\u003c/code\u003e special method is now added when the\ndeclared interface provides it, in the same way as is already done for\nthe other special methods looked up on the type, so the first path\nconversion triggers creation of the wrapped object and succeeds. With\nthanks to Muneeb Sheikh for \u003ccode\u003epull request [#360](https://github.com/GrahamDumpleton/wrapt/issues/360) \u0026lt;https://github.com/GrahamDumpleton/wrapt/pull/360\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA callback passed to \u003ccode\u003ewrapt.WeakFunctionProxy\u003c/code\u003e which was callable but\nevaluated as false, such as an event emitter object which reports its\nnumber of subscribers via \u003ccode\u003e__len__()\u003c/code\u003e and is empty when first created,\nwas passed the underlying weak reference object instead of the proxy\nwhen the wrapped function expired. Where the wrapped function was a\nbound method, such a callback could also be called twice, once each\nwhen the instance and the function expired. Only \u003ccode\u003eNone\u003c/code\u003e is now treated\nas meaning no callback was supplied, which mirrors the behaviour of\n\u003ccode\u003eweakref.ref()\u003c/code\u003e and \u003ccode\u003eweakref.proxy()\u003c/code\u003e in the standard library, so\nthese callbacks now receive the proxy and are called only once, as for\nany other callback. With thanks to Huanyi Xie for \u003ccode\u003epull request [#359](https://github.com/GrahamDumpleton/wrapt/issues/359) \u0026lt;https://github.com/GrahamDumpleton/wrapt/pull/359\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA \u003ccode\u003ewrapt.AdapterFactory\u003c/code\u003e instance passed as the \u003ccode\u003eadapter\u003c/code\u003e argument\nto \u003ccode\u003ewrapt.decorator\u003c/code\u003e was ignored, and so never called, if the instance\nevaluated as false, such as when the factory class defined \u003ccode\u003e__bool__()\u003c/code\u003e\nor \u003ccode\u003e__len__()\u003c/code\u003e. The decorated function then retained its original\nsignature instead of that produced by the factory. Whether an adapter\nfactory was supplied is now determined by type before the truth value\nof the adapter is considered, so such factories are always called. As a\nconsequence of this change a factory can now also return \u003ccode\u003eNone\u003c/code\u003e, or\nany other false value, to indicate that no adapter should be used for a\nparticular function, where previously this failed with an obscure error.\nWith thanks to Luochenchen for \u003ccode\u003epull request [#358](https://github.com/GrahamDumpleton/wrapt/issues/358) \u0026lt;https://github.com/GrahamDumpleton/wrapt/pull/358\u0026gt;\u003c/code\u003e_ which identified\nthe issue.\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/GrahamDumpleton/wrapt/commit/dbbb21fa76915541a850a2029e97c116f38a53b0\"\u003e\u003ccode\u003edbbb21f\u003c/code\u003e\u003c/a\u003e Merge branch 'release/2.5.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/95e2afbb47cadfdff5e19ec88ba7caf718bd4a45\"\u003e\u003ccode\u003e95e2afb\u003c/code\u003e\u003c/a\u003e Drop the release candidate suffix for the 2.5.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/1ed68ca8c32b15c59dea50032b08bc3271529ec3\"\u003e\u003ccode\u003e1ed68ca\u003c/code\u003e\u003c/a\u003e Update to 2.5.1rc1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/77e826dd8973c960f0733977ec67f43896a4d050\"\u003e\u003ccode\u003e77e826d\u003c/code\u003e\u003c/a\u003e Recognise adapter factories by type so one which evaluates as false is not ig...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/13efe635b6942394977b016cfd2d8ac6530a8124\"\u003e\u003ccode\u003e13efe63\u003c/code\u003e\u003c/a\u003e Move change note for PR \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/359\"\u003e#359\u003c/a\u003e under 2.5.1 and add clarifying comments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/6ba6048628e7a1c584bd767b451037dc36dd6b03\"\u003e\u003ccode\u003e6ba6048\u003c/code\u003e\u003c/a\u003e Reorder \u003cstrong\u003efspath\u003c/strong\u003e handling in lazy proxy and add change note for PR \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/360\"\u003e#360\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/5e97e2d1a3c2effc9f1f8357f83802e6cbce8998\"\u003e\u003ccode\u003e5e97e2d\u003c/code\u003e\u003c/a\u003e Update to 2.5.1.dev1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/e9d491c7c8b31747e9dc280f48783d69d9ac2904\"\u003e\u003ccode\u003ee9d491c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/359\"\u003e#359\u003c/a\u003e from xiehuanyi/fix-falsey-weak-proxy-callbacks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/0d6c935bac4fe9c4b3ca2a0f696950024b8b07bc\"\u003e\u003ccode\u003e0d6c935\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/GrahamDumpleton/wrapt/issues/360\"\u003e#360\u003c/a\u003e from muneikh/fix-lazy-pathlike-interface\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GrahamDumpleton/wrapt/commit/de574aa4fd5ca3c272e533dfd250a4868bfacbb3\"\u003e\u003ccode\u003ede574aa\u003c/code\u003e\u003c/a\u003e Honor the declared pathlike interface in lazy proxies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/GrahamDumpleton/wrapt/compare/2.5.0...2.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.4 to 3.14.5\nUpdates `hypothesis` from 6.168.5 to 6.170.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7572cd07bbb9d845c40f71c95ba3853fb7467403\"\u003e\u003ccode\u003e7572cd0\u003c/code\u003e\u003c/a\u003e Bump hypothesis version to 6.170.0 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/1ad039f4ead3a91721bb8adde8da6c46979d549c\"\u003e\u003ccode\u003e1ad039f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4871\"\u003e#4871\u003c/a\u003e from Zac-HD/claude/hypothesi...\n\n_Description has been truncated_","html_url":"https://github.com/Burbanit0/Vote-App/pull/990","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Burbanit0%2FVote-App/issues/990","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/990/packages"}},{"old_version":"0.143.0","new_version":"0.147.0","update_type":"minor","path":null,"pr_created_at":"2026-10-22T11:14:36.000Z","version_change":"0.143.0 → 0.147.0","issue":{"uuid":"5978224567","node_id":"PR_kwDOVK_bNc8AAAABKAXlYQ","number":6,"state":"open","title":"Bump fastapi from 0.143.0 to 0.147.0","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-22T11:14:36.000Z","updated_at":"2026-10-22T11:20:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.147.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.147.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.147.0\u003c/h2\u003e\n\u003cp\u003eOmitted \u003ccode\u003ebool\u003c/code\u003e and \u003ccode\u003ebool | None\u003c/code\u003e form fields are now interpreted as \u003ccode\u003eFalse\u003c/code\u003e, matching unchecked HTML checkboxes. This applies to individual \u003ccode\u003eForm\u003c/code\u003e parameters and form models, including required fields and fields with defaults of \u003ccode\u003eTrue\u003c/code\u003e or \u003ccode\u003eNone\u003c/code\u003e. The inferred value is considered explicitly set, including in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eJSON requests and direct Pydantic validation are unchanged. See \u003ca href=\"https://fastapi.tiangolo.com/tutorial/request-forms/#boolean-form-fields\"\u003eBoolean Form Fields\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat omitted boolean form fields as False. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16523\"\u003e#16523\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Add tests for parameter defaults, nullability, and browser form behavior. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14829\"\u003e#14829\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\u003ch2\u003e0.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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.145.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16518\"\u003e#16518\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📝 Document URL paths in templates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16517\"\u003e#16517\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.144.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add WebSocket support to security dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/10147\"\u003e#10147\u003c/a\u003e by \u003ca href=\"https://github.com/mnixry\"\u003e\u003ccode\u003e@​mnixry\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9383\"\u003e#9383\u003c/a\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.4\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add httpx2 to optional dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16512\"\u003e#16512\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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\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/f63265848ef3caa5be5deba05ec6eabb169d9fb2\"\u003e\u003ccode\u003ef632658\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.147.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16524\"\u003e#16524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1875e964242f9de85259bda8c952105ee79e9a29\"\u003e\u003ccode\u003e1875e96\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/19c0b7a5b0c18a6f2e7c0763884654f48ffa3ff1\"\u003e\u003ccode\u003e19c0b7a\u003c/code\u003e\u003c/a\u003e 🐛 Treat omitted boolean form fields as False (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16523\"\u003e#16523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e5c786d7e1ebff20c4a83f09da19646944f830eb\"\u003e\u003ccode\u003ee5c786d\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6a5069998a75e096c2c84ccff73e234a43d9d7b7\"\u003e\u003ccode\u003e6a50699\u003c/code\u003e\u003c/a\u003e ✅ Add tests for parameter defaults, nullability, and browser form behavior (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3070b5105fe02c4afdba5e3aea6c2cf2e3796c7f\"\u003e\u003ccode\u003e3070b51\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.146.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16521\"\u003e#16521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a17bd595ae17d5b8ec01f2acc291f36844d478fe\"\u003e\u003ccode\u003ea17bd59\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/45c419938435d668a85a2e81bb9ac41495f8a648\"\u003e\u003ccode\u003e45c4199\u003c/code\u003e\u003c/a\u003e 🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16520\"\u003e#16520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/129c9cfcd33c3ed4371c9674e724fd838a292e2b\"\u003e\u003ccode\u003e129c9cf\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.145.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16519\"\u003e#16519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/475b46638fd2ea6608f80418a6333a9107340e28\"\u003e\u003ccode\u003e475b466\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.143.0...0.147.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=fastapi\u0026package-manager=pip\u0026previous-version=0.143.0\u0026new-version=0.147.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/legendlucky/gaanaapi/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/legendlucky%2Fgaanaapi/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"0.121.3","new_version":"0.128.8","update_type":"minor","path":null,"pr_created_at":"2026-10-22T05:15:31.000Z","version_change":"0.121.3 → 0.128.8","issue":{"uuid":"5973517829","node_id":"PR_kwDOO4ncns8AAAABJ8l_MA","number":662,"state":"open","title":"build(deps): bump the all-dependencies group across 1 directory with 40 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-22T05:15:31.000Z","updated_at":"2026-10-22T05:15:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"all-dependencies","update_count":40,"packages":[{"name":"openai","old_version":"2.8.1","new_version":"2.48.0","repository_url":"https://github.com/openai/openai-python"},{"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.22.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"aiohttp","old_version":"3.13.2","new_version":"3.13.5","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"uvicorn","old_version":"0.31.1","new_version":"0.39.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.23.0","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"fastapi","old_version":"0.121.3","new_version":"0.128.8","repository_url":"https://github.com/fastapi/fastapi"},{"name":"orjson","old_version":"3.11.4","new_version":"3.11.5","repository_url":"https://github.com/ijl/orjson"},{"name":"apscheduler","old_version":"3.11.1","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"fastapi-sso","old_version":"0.16.0","new_version":"0.20.0","repository_url":"https://github.com/tomasvotava/fastapi-sso"},{"name":"pyjwt","old_version":"2.10.1","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-multipart","old_version":"0.0.18","new_version":"0.0.20","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"prisma","old_version":"0.11.0","new_version":"0.15.0","repository_url":"https://github.com/RobertCraigie/prisma-client-py"},{"name":"azure-identity","old_version":"1.25.1","new_version":"1.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-keyvault-secrets","old_version":"4.11.2","new_version":"4.11.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"azure-storage-blob","old_version":"12.30.1","new_version":"12.30.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"google-cloud-kms","old_version":"3.6.0","new_version":"3.13.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-cloud-iam","old_version":"2.19.1","new_version":"2.23.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"resend","old_version":"2.43.0","new_version":"2.50.0","repository_url":"https://github.com/resendlabs/resend-python"},{"name":"pynacl","old_version":"1.6.1","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"name":"boto3","old_version":"1.36.0","new_version":"1.42.97","repository_url":"https://github.com/boto/boto3"},{"name":"mcp","old_version":"1.22.0","new_version":"1.30.0","repository_url":"https://github.com/modelcontextprotocol/python-sdk"},{"name":"litellm-proxy-extras","old_version":"0.4.9","new_version":"0.4.110","repository_url":"https://github.com/BerriAI/litellm"},{"name":"rich","old_version":"13.7.1","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"litellm-enterprise","old_version":"0.1.22","new_version":"0.1.78","repository_url":"https://github.com/BerriAI/litellm"},{"name":"polars","old_version":"1.35.2","new_version":"2.0.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"semantic-router","old_version":"0.1.12","new_version":"0.2.0.dev1","repository_url":"https://github.com/aurelio-labs/semantic-router"},{"name":"mlflow","old_version":"3.16.0","new_version":"3.17.1","repository_url":"https://github.com/mlflow/mlflow"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.13.1","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"ruff","old_version":"0.16.6","new_version":"0.17.1","repository_url":"https://github.com/astral-sh/ruff"},{"name":"prometheus-client","old_version":"0.20.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"starlette","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tenacity","old_version":"9.1.4","new_version":"9.2.1","repository_url":"https://github.com/jd/tenacity"},{"name":"tzdata","old_version":"2026.3","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"},{"name":"google-cloud-aiplatform","old_version":"2.1.0","new_version":"2.5.0","repository_url":"https://github.com/googleapis/python-aiplatform"},{"name":"google-genai","old_version":"2.22.0","new_version":"2.31.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"anthropic","old_version":"1.4.0","new_version":"1.15.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"ddtrace","old_version":"4.14.0","new_version":"4.16.0","repository_url":"https://github.com/DataDog/dd-trace-py"},{"name":"azure-storage-file-datalake","old_version":"12.25.0","new_version":"12.26.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"sentry-sdk","old_version":"2.69.1","new_version":"2.72.0","repository_url":"https://github.com/getsentry/sentry-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 40 updates in the /litellm-main(2)/litellm-main directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openai](https://github.com/openai/openai-python) | `2.8.1` | `2.48.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.22.2` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.2` | `3.13.5` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.31.1` | `0.39.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.23.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.121.3` | `0.128.8` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.4` | `3.11.5` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.1` | `3.11.3` |\n| [fastapi-sso](https://github.com/tomasvotava/fastapi-sso) | `0.16.0` | `0.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.10.1` | `2.15.1` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.18` | `0.0.20` |\n| [prisma](https://github.com/RobertCraigie/prisma-client-py) | `0.11.0` | `0.15.0` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.25.1` | `1.26.0` |\n| [azure-keyvault-secrets](https://github.com/Azure/azure-sdk-for-python) | `4.11.2` | `4.11.3` |\n| [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.30.1` | `12.30.3` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.6.0` | `3.13.0` |\n| [google-cloud-iam](https://github.com/googleapis/google-cloud-python) | `2.19.1` | `2.23.0` |\n| [resend](https://github.com/resendlabs/resend-python) | `2.43.0` | `2.50.0` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.6.1` | `1.6.2` |\n| [boto3](https://github.com/boto/boto3) | `1.36.0` | `1.42.97` |\n| [mcp](https://github.com/modelcontextprotocol/python-sdk) | `1.22.0` | `1.30.0` |\n| [litellm-proxy-extras](https://github.com/BerriAI/litellm) | `0.4.9` | `0.4.110` |\n| [rich](https://github.com/Textualize/rich) | `13.7.1` | `15.0.0` |\n| [litellm-enterprise](https://github.com/BerriAI/litellm) | `0.1.22` | `0.1.78` |\n| [polars](https://github.com/pola-rs/polars) | `1.35.2` | `2.0.0` |\n| [semantic-router](https://github.com/aurelio-labs/semantic-router) | `0.1.12` | `0.2.0.dev1` |\n| [mlflow](https://github.com/mlflow/mlflow) | `3.16.0` | `3.17.1` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.13.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.6` | `0.17.1` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.20.0` | `0.26.0` |\n| [starlette](https://github.com/Kludex/starlette) | `1.6.0` | `1.7.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |\n| [tzdata](https://github.com/python/tzdata) | `2026.3` | `2026.5` |\n| [google-cloud-aiplatform](https://github.com/googleapis/python-aiplatform) | `2.1.0` | `2.5.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.22.0` | `2.31.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `1.4.0` | `1.15.0` |\n| [ddtrace](https://github.com/DataDog/dd-trace-py) | `4.14.0` | `4.16.0` |\n| [azure-storage-file-datalake](https://github.com/Azure/azure-sdk-for-python) | `12.25.0` | `12.26.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.69.1` | `2.72.0` |\n\n\nUpdates `openai` from 2.8.1 to 2.48.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.48.0\u003c/h2\u003e\n\u003ch2\u003e2.48.0 (2026-07-23)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.47.0...v2.48.0\"\u003ev2.47.0...v2.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e accept \u003ccode\u003eNone\u003c/code\u003e for prompt_cache_key/safety_identifier (\u003ca href=\"https://github.com/openai/openai-python/commit/36820e69ba6cf1dc3f8d411e48a36e56084fbbc4\"\u003e36820e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for \u003ccode\u003espend_limit\u003c/code\u003e admin apis (\u003ca href=\"https://github.com/openai/openai-python/commit/1ff13afb6e831394036686a1c352bbec6d704c68\"\u003e1ff13af\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.47.0\u003c/h2\u003e\n\u003ch2\u003e2.47.0 (2026-07-21)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.46.0...v2.47.0\"\u003ev2.46.0...v2.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e Add experimental runtime support for HTTPX2 clients (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3524\"\u003e#3524\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/317260cd16395b2338bcdaacd7daa0b179c90105\"\u003e317260c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estlc:\u003c/strong\u003e configurable CI runner and private-production-repo support in workflow templates (\u003ca href=\"https://github.com/openai/openai-python/commit/4303e974f08394789c6075b6745357b2f1c36e21\"\u003e4303e97\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e require patched aiohttp on Python 3.10+ (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3515\"\u003e#3515\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d4dceb221b9a92c55c232d5b330ae89beb539415\"\u003ed4dceb2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.46.0\u003c/h2\u003e\n\u003ch2\u003e2.46.0 (2026-07-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.45.0...v2.46.0\"\u003ev2.45.0...v2.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e /organization/projects/{project_id}/service_accounts/{service_account_id}/api_keys\u0026quot; endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/5a0094194eac9c605c8ca84d47d1c5518f8e2131\"\u003e5a00941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add owner_project_access to APIKeyListParams (\u003ca href=\"https://github.com/openai/openai-python/commit/f589d04bf9f377ecb1f54335ab3ab9d825b5dfee\"\u003ef589d04\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/980f176e83ee5d991bf9e8e4def80d9905ade5ec\"\u003e980f176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/2eae984315580cdbf9ceb14d6cb568c581baa768\"\u003e2eae984\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve generated type compatibility (\u003ca href=\"https://github.com/openai/openai-python/commit/00bd72adbe03f4b5c4b89d91b8d317f11b58bbdf\"\u003e00bd72a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove beta annotation compatibility aliases (\u003ca href=\"https://github.com/openai/openai-python/commit/99dbd15ff3ad1628b94a729a6b688212d4655908\"\u003e99dbd15\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.45.0\u003c/h2\u003e\n\u003ch2\u003e2.45.0 (2026-07-09)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.44.0...v2.45.0\"\u003ev2.44.0...v2.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.48.0 (2026-07-23)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.47.0...v2.48.0\"\u003ev2.47.0...v2.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e accept \u003ccode\u003eNone\u003c/code\u003e for prompt_cache_key/safety_identifier (\u003ca href=\"https://github.com/openai/openai-python/commit/36820e69ba6cf1dc3f8d411e48a36e56084fbbc4\"\u003e36820e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for \u003ccode\u003espend_limit\u003c/code\u003e admin apis (\u003ca href=\"https://github.com/openai/openai-python/commit/1ff13afb6e831394036686a1c352bbec6d704c68\"\u003e1ff13af\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.47.0 (2026-07-21)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.46.0...v2.47.0\"\u003ev2.46.0...v2.47.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e Add experimental runtime support for HTTPX2 clients (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3524\"\u003e#3524\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/317260cd16395b2338bcdaacd7daa0b179c90105\"\u003e317260c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estlc:\u003c/strong\u003e configurable CI runner and private-production-repo support in workflow templates (\u003ca href=\"https://github.com/openai/openai-python/commit/4303e974f08394789c6075b6745357b2f1c36e21\"\u003e4303e97\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e require patched aiohttp on Python 3.10+ (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3515\"\u003e#3515\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/d4dceb221b9a92c55c232d5b330ae89beb539415\"\u003ed4dceb2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.46.0 (2026-07-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.45.0...v2.46.0\"\u003ev2.45.0...v2.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e /organization/projects/{project_id}/service_accounts/{service_account_id}/api_keys\u0026quot; endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/5a0094194eac9c605c8ca84d47d1c5518f8e2131\"\u003e5a00941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add owner_project_access to APIKeyListParams (\u003ca href=\"https://github.com/openai/openai-python/commit/f589d04bf9f377ecb1f54335ab3ab9d825b5dfee\"\u003ef589d04\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/980f176e83ee5d991bf9e8e4def80d9905ade5ec\"\u003e980f176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/2eae984315580cdbf9ceb14d6cb568c581baa768\"\u003e2eae984\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve generated type compatibility (\u003ca href=\"https://github.com/openai/openai-python/commit/00bd72adbe03f4b5c4b89d91b8d317f11b58bbdf\"\u003e00bd72a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e remove beta annotation compatibility aliases (\u003ca href=\"https://github.com/openai/openai-python/commit/99dbd15ff3ad1628b94a729a6b688212d4655908\"\u003e99dbd15\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.45.0 (2026-07-09)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.44.0...v2.45.0\"\u003ev2.44.0...v2.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e gpt-5.6-sol updates (\u003ca href=\"https://github.com/openai/openai-python/commit/039d1feb264a2dca7195ba5028e9fb47a5e04987\"\u003e039d1fe\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\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/openai/openai-python/commit/8a6adcb3b88d89462a0fc5a81f50d9775c9ca138\"\u003e\u003ccode\u003e8a6adcb\u003c/code\u003e\u003c/a\u003e release: 2.48.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/cbd2fba7c48b6376e80775cb191e2eda1d476c61\"\u003e\u003ccode\u003ecbd2fba\u003c/code\u003e\u003c/a\u003e feat(api): add support for \u003ccode\u003espend_limit\u003c/code\u003e admin apis\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/00709f2ae951ce79705467e92d71a926a46b82f6\"\u003e\u003ccode\u003e00709f2\u003c/code\u003e\u003c/a\u003e feat(api): accept \u003ccode\u003eNone\u003c/code\u003e for prompt_cache_key/safety_identifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e67afa88433dad9f97e733ae8f2ee6e9c240bc51\"\u003e\u003ccode\u003ee67afa8\u003c/code\u003e\u003c/a\u003e release: 2.47.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e1925e9804aa1bbd33359d91ed3fee105cac103f\"\u003e\u003ccode\u003ee1925e9\u003c/code\u003e\u003c/a\u003e feat(client): Add experimental runtime support for HTTPX2 clients (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3524\"\u003e#3524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/7f4edb662abdeb8178c9df48023975684aea4349\"\u003e\u003ccode\u003e7f4edb6\u003c/code\u003e\u003c/a\u003e feat(stlc): configurable CI runner and private-production-repo support in wor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/d4dceb221b9a92c55c232d5b330ae89beb539415\"\u003e\u003ccode\u003ed4dceb2\u003c/code\u003e\u003c/a\u003e fix(deps): require patched aiohttp on Python 3.10+ (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3515\"\u003e#3515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/b140f45c2c1850306a91113245639a0a41f19f28\"\u003e\u003ccode\u003eb140f45\u003c/code\u003e\u003c/a\u003e ci: Set up CodeQL scanning (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3514\"\u003e#3514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/0e6adb15adc1e74087bcb402de7a75e4fbc0aecb\"\u003e\u003ccode\u003e0e6adb1\u003c/code\u003e\u003c/a\u003e release: 2.46.0 (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3501\"\u003e#3501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/f16fbbd2bd25dc1ff150b5f78dbd15ff6bab6d91\"\u003e\u003ccode\u003ef16fbbd\u003c/code\u003e\u003c/a\u003e release: 2.45.0 (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.8.1...v2.48.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tiktoken` from 0.12.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/tiktoken/blob/main/CHANGELOG.md\"\u003etiktoken's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[v0.14.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBuild wheels for Python 3.15\u003c/li\u003e\n\u003cli\u003eSupport looking up more GPT-5 series models\u003c/li\u003e\n\u003cli\u003eUpgrade dependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[v0.13.0]\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate fancy-regex for significantly increased performance\u003c/li\u003e\n\u003cli\u003eBranch byte pair encoding to fix performance on unusual input\u003c/li\u003e\n\u003cli\u003eFix AttributeError caused by incomplete redaction of experimental code\u003c/li\u003e\n\u003cli\u003eUpdate version of \u003ccode\u003epyo3\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate version of optional dependency \u003ccode\u003eblobfile\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/openai/tiktoken/commit/4e71bbe0c078468e00fefbf94b39849389f346e5\"\u003e\u003ccode\u003e4e71bbe\u003c/code\u003e\u003c/a\u003e Release 0.14.0 (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/212b893ba940cba53476851103d2e5c1d0020c6e\"\u003e\u003ccode\u003e212b893\u003c/code\u003e\u003c/a\u003e Fail open for GPT-5 model tokenisers (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/4187ba33e48b7c554de02c17149ff0c5e50ddf38\"\u003e\u003ccode\u003e4187ba3\u003c/code\u003e\u003c/a\u003e Upgrade dependencies (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/595\"\u003e#595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/92a82552fc5d046839f83e3505a6d9b002208ac2\"\u003e\u003ccode\u003e92a8255\u003c/code\u003e\u003c/a\u003e Remove test-skip comment for macOS arm64 (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/674f5e65caad92c2b17f944fbdc4256fea32890e\"\u003e\u003ccode\u003e674f5e6\u003c/code\u003e\u003c/a\u003e Build Python 3.15 (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/594\"\u003e#594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/dbea866194b3c7d496a029c8faf9ad238064a992\"\u003e\u003ccode\u003edbea866\u003c/code\u003e\u003c/a\u003e Remove deprecated freethreading build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/f6782242d03134d18b9a551845fd7d69fd23106e\"\u003e\u003ccode\u003ef678224\u003c/code\u003e\u003c/a\u003e Update cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/08a5f3b2c987ada4fc5aa1f16c643c203fa8acaa\"\u003e\u003ccode\u003e08a5f3b\u003c/code\u003e\u003c/a\u003e ci: use static artifact name for sdist build job (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/fa8b65d062fb6a656ac3810c89efde4c8ab999e2\"\u003e\u003ccode\u003efa8b65d\u003c/code\u003e\u003c/a\u003e Partial sync of codebase (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/tiktoken/commit/dcb39287a1f90a94d4bf6146df25da03c017646f\"\u003e\u003ccode\u003edcb3928\u003c/code\u003e\u003c/a\u003e [codex] Pin GitHub Actions workflow references (\u003ca href=\"https://redirect.github.com/openai/tiktoken/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/tiktoken/compare/0.12.0...0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tokenizers` from 0.22.1 to 0.22.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/tokenizers/releases\"\u003etokenizers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.22.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eOkay mostly doing the release for these PR:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate deserialize of added tokens by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1891\"\u003ehuggingface/tokenizers#1891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate stub for typing by \u003ca href=\"https://github.com/ArthurZucker\"\u003e\u003ccode\u003e@​ArthurZucker\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1896\"\u003ehuggingface/tokenizers#1896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebump PyO3 to 0.26 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1901\"\u003ehuggingface/tokenizers#1901\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eBasically good typing with at least \u003ccode\u003ety\u003c/code\u003e, and a lot fast (from 4 to 8x faster) loading vocab with a lot of added tokens and GIL free !?\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eci: add support for building Win-ARM64 wheels by \u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1869\"\u003ehuggingface/tokenizers#1869\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd cargo-semver-checks to Rust CI workflow by \u003ca href=\"https://github.com/haixuanTao\"\u003e\u003ccode\u003e@​haixuanTao\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1875\"\u003ehuggingface/tokenizers#1875\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate indicatif dependency by \u003ca href=\"https://github.com/gordonmessmer\"\u003e\u003ccode\u003e@​gordonmessmer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1867\"\u003ehuggingface/tokenizers#1867\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump node-forge from 1.3.1 to 1.3.2 in /tokenizers/examples/unstable_wasm/www 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/huggingface/tokenizers/pull/1889\"\u003ehuggingface/tokenizers#1889\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump js-yaml from 3.14.1 to 3.14.2 in /bindings/node 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/huggingface/tokenizers/pull/1892\"\u003ehuggingface/tokenizers#1892\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efix: used normalize_str in BaseTokenizer.normalize by \u003ca href=\"https://github.com/ishitab02\"\u003e\u003ccode\u003e@​ishitab02\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1884\"\u003ehuggingface/tokenizers#1884\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[MINOR:TYPO] Update mod.rs by \u003ca href=\"https://github.com/cakiki\"\u003e\u003ccode\u003e@​cakiki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1883\"\u003ehuggingface/tokenizers#1883\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove runtime stderr warning from Python bindings by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1898\"\u003ehuggingface/tokenizers#1898\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMark immutable pyclasses as frozen by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1861\"\u003ehuggingface/tokenizers#1861\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDOCS: add \u003ccode\u003eadd_prefix_space\u003c/code\u003e to \u003ccode\u003eprocessors.ByteLevel\u003c/code\u003e  by \u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1878\"\u003ehuggingface/tokenizers#1878\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump express from 4.21.2 to 4.22.1 in /tokenizers/examples/unstable_wasm/www 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/huggingface/tokenizers/pull/1903\"\u003ehuggingface/tokenizers#1903\u003c/a\u003e\u003c/p\u003e\n\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/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1869\"\u003ehuggingface/tokenizers#1869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haixuanTao\"\u003e\u003ccode\u003e@​haixuanTao\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1875\"\u003ehuggingface/tokenizers#1875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gordonmessmer\"\u003e\u003ccode\u003e@​gordonmessmer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1867\"\u003ehuggingface/tokenizers#1867\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ishitab02\"\u003e\u003ccode\u003e@​ishitab02\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1884\"\u003ehuggingface/tokenizers#1884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1898\"\u003ehuggingface/tokenizers#1898\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1861\"\u003ehuggingface/tokenizers#1861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CloseChoice\"\u003e\u003ccode\u003e@​CloseChoice\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/huggingface/tokenizers/pull/1878\"\u003ehuggingface/tokenizers#1878\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.1...v0.22.2\"\u003ehttps://github.com/huggingface/tokenizers/compare/v0.22.1...v0.22.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/huggingface/tokenizers/commit/f383101a26663708484cac0727792aad74f78234\"\u003e\u003ccode\u003ef383101\u003c/code\u003e\u003c/a\u003e fix max build?\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/fb691515d02fe8ef47ae7fd6f3bd78f99e825457\"\u003e\u003ccode\u003efb69151\u003c/code\u003e\u003c/a\u003e Python release fix (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1905\"\u003e#1905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/6573f2c56172bac56f211e77934be3215adef2c2\"\u003e\u003ccode\u003e6573f2c\u003c/code\u003e\u003c/a\u003e add lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/1d9dbb82a3a448474aebb1b032ed4eff4e458694\"\u003e\u003ccode\u003e1d9dbb8\u003c/code\u003e\u003c/a\u003e push the release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/95504c029325a5156564d26e4966c189f6b5b426\"\u003e\u003ccode\u003e95504c0\u003c/code\u003e\u003c/a\u003e add .lock and v0.22.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/860474078263d719865e3813c7c35c5e240084dd\"\u003e\u003ccode\u003e8604740\u003c/code\u003e\u003c/a\u003e update stub for typing (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1896\"\u003e#1896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/a5e03bab570d0f82b7eceb1072ed13b506b8f1f6\"\u003e\u003ccode\u003ea5e03ba\u003c/code\u003e\u003c/a\u003e Bump express in /tokenizers/examples/unstable_wasm/www (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1903\"\u003e#1903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/ebbc3c8da336265912f5b7195dea155c54c1dc2b\"\u003e\u003ccode\u003eebbc3c8\u003c/code\u003e\u003c/a\u003e bump PyO3 to 0.26 (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1901\"\u003e#1901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/b83d7c986c1d885c4e412715dbb63a1efd0438e1\"\u003e\u003ccode\u003eb83d7c9\u003c/code\u003e\u003c/a\u003e DOCS: add \u003ccode\u003eadd_prefix_space\u003c/code\u003e to \u003ccode\u003eprocessors.ByteLevel\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1878\"\u003e#1878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/tokenizers/commit/060786018e6c3903ccc3ae7ac35394daa6a1e070\"\u003e\u003ccode\u003e0607860\u003c/code\u003e\u003c/a\u003e Mark immutable pyclasses as frozen (\u003ca href=\"https://redirect.github.com/huggingface/tokenizers/issues/1861\"\u003e#1861\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/tokenizers/compare/v0.22.1...v0.22.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohttp` from 3.13.2 to 3.13.5\nUpdates `uvicorn` from 0.31.1 to 0.39.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.39.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eexplicitly start ASGI run with empty context by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(websockets): Send close frame on ASGI return by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2769\"\u003eKludex/uvicorn#2769\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/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2742\"\u003eKludex/uvicorn#2742\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.38.0...0.39.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.38.0...0.39.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.38.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2723\"\u003eKludex/uvicorn#2723\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NGANAMODEIJunior\"\u003e\u003ccode\u003e@​NGANAMODEIJunior\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2713\"\u003eKludex/uvicorn#2713\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.37.0...0.38.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.37.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e setting by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2711\"\u003eKludex/uvicorn#2711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e by \u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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/LincolnPuzey\"\u003e\u003ccode\u003e@​LincolnPuzey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2669\"\u003eKludex/uvicorn#2669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rnv812\"\u003e\u003ccode\u003e@​rnv812\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2676\"\u003eKludex/uvicorn#2676\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.36.1...0.37.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2709\"\u003eKludex/uvicorn#2709\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.36.0...0.36.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.36.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs by \u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2658\"\u003eKludex/uvicorn#2658\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gnir-work\"\u003e\u003ccode\u003e@​gnir-work\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2435\"\u003eKludex/uvicorn#2435\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/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.39.0 (December 21, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSend close frame on ASGI return for WebSockets (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExplicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.38.0 (October 18, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.37.0 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--timeout-worker-healthcheck\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2711\"\u003e#2711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eos.PathLike[str]\u003c/code\u003e type to \u003ccode\u003essl_ca_certs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2676\"\u003e#2676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.1 (September 23, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise an exception when calling removed \u003ccode\u003eConfig.setup_event_loop()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.36.0 (September 20, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport custom IOLOOPs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2435\"\u003e#2435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow to provide importable string in \u003ccode\u003e--http\u003c/code\u003e, \u003ccode\u003e--ws\u003c/code\u003e and \u003ccode\u003e--loop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2658\"\u003e#2658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.35.0 (June 28, 2025)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eWebSocketsSansIOProtocol\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2540\"\u003e#2540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefine help message for option \u003ccode\u003e--proxy-headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2653\"\u003e#2653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.3 (June 1, 2025)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't include \u003ccode\u003ecwd()\u003c/code\u003e when non-empty \u003ccode\u003e--reload-dirs\u003c/code\u003e is passed (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2598\"\u003e#2598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply \u003ccode\u003eget_client_addr\u003c/code\u003e formatting to WebSocket logging (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2636\"\u003e#2636\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/4f40b8495772eb3a1ab3613ffd7be5156f8e1389\"\u003e\u003ccode\u003e4f40b84\u003c/code\u003e\u003c/a\u003e Version 0.39.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2770\"\u003e#2770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5692dfc416f9e65aee5028e55d119313d8d3ab0f\"\u003e\u003ccode\u003e5692dfc\u003c/code\u003e\u003c/a\u003e fix(websockets): Send close frame on ASGI return (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2769\"\u003e#2769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4194764a26824e5d8ddd1fa673df78dff82966e0\"\u003e\u003ccode\u003e4194764\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2763\"\u003e#2763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d94bf28743de545d2d4b150f022203a5178cb705\"\u003e\u003ccode\u003ed94bf28\u003c/code\u003e\u003c/a\u003e explicitly start ASGI run with empty context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2742\"\u003e#2742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8ae0bcbecb0a655789abf0c2dd4200848fc68a30\"\u003e\u003ccode\u003e8ae0bcb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2748\"\u003e#2748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/4744ff9a1a4888c76ea160328cc9dcc2680c2c71\"\u003e\u003ccode\u003e4744ff9\u003c/code\u003e\u003c/a\u003e Add groups configuration for GitHub Actions (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2747\"\u003e#2747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/0391372376c264604a0475b0864bcbf3a8705352\"\u003e\u003ccode\u003e0391372\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2746\"\u003e#2746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/69a6ae319801a5866ec07afdeb2ff3d912f4d3a0\"\u003e\u003ccode\u003e69a6ae3\u003c/code\u003e\u003c/a\u003e Improve typing in \u003ccode\u003etest_http.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2740\"\u003e#2740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3850ad6520cafb290bd4174fa9c4ca5d33440c82\"\u003e\u003ccode\u003e3850ad6\u003c/code\u003e\u003c/a\u003e Version 0.38.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9b3f17a549ec96f57bf4d975145fc58feefdd4e8\"\u003e\u003ccode\u003e9b3f17a\u003c/code\u003e\u003c/a\u003e Support Python 3.14 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2723\"\u003e#2723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.31.1...0.39.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvloop` from 0.21.0 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/uvloop/releases\"\u003euvloop's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.15 and 3.15t wheel builds and CI coverage (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/758\"\u003e#758\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/honglei\"\u003e\u003ccode\u003e@​honglei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in f7c05473)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for the \u003ccode\u003eeager_start\u003c/code\u003e keyword argument in create_task() (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/748\"\u003e#748\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/samypr100\"\u003e\u003ccode\u003e@​samypr100\u003c/code\u003e\u003c/a\u003e in 3cbb0956 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/746\"\u003e#746\u003c/a\u003e \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/718\"\u003e#718\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd thread name prefix to the default thread pool executor (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/636\"\u003e#636\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/inikolaev\"\u003e\u003ccode\u003e@​inikolaev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in 0582f946 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/562\"\u003e#562\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for special hostname \u003ccode\u003e\u0026lt;broadcast\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/592\"\u003e#592\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/jpbede\"\u003e\u003ccode\u003e@​jpbede\u003c/code\u003e\u003c/a\u003e in 3060cebc for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/540\"\u003e#540\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade libuv to v1.52.1 (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/753\"\u003e#753\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in e8efea40 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/752\"\u003e#752\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance by using Python C API to enter/exit context (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/627\"\u003e#627\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in 837ef22c)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance/latency of Transport.write (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/619\"\u003e#619\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in 1d9b6e0d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eReplace some SSL vectorcall with direct methods (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/626\"\u003e#626\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in 6a27cbe2)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimize SSL buffered reads using C values (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/629\"\u003e#629\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/tarasko\"\u003e\u003ccode\u003e@​tarasko\u003c/code\u003e\u003c/a\u003e in a308f75f)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDetach socket on create_connection cancellation to prevent fd double-close (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/740\"\u003e#740\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/junjzhang\"\u003e\u003ccode\u003e@​junjzhang\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fantix\"\u003e\u003ccode\u003e@​fantix\u003c/code\u003e\u003c/a\u003e in dc680eb2 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/645\"\u003e#645\u003c/a\u003e \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/738\"\u003e#738\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eloop._ready_len\u003c/code\u003e in favor of \u003ccode\u003elen(loop._ready)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/721\"\u003e#721\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in 5910a183 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/720\"\u003e#720\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrefer inspect.iscoroutinefunction (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/705\"\u003e#705\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/MatthieuDartiailh\"\u003e\u003ccode\u003e@​MatthieuDartiailh\u003c/code\u003e\u003c/a\u003e in fd650276 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/703\"\u003e#703\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix context tests by explicitly yielding after run_in_executor (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/743\"\u003e#743\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/samypr100\"\u003e\u003ccode\u003e@​samypr100\u003c/code\u003e\u003c/a\u003e in 6cd24cbb)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix test_create_connection_open_con_addr with Python 3.13.9+ (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/713\"\u003e#713\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/shadchin\"\u003e\u003ccode\u003e@​shadchin\u003c/code\u003e\u003c/a\u003e in b93141a5 for \u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/701\"\u003e#701\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSkip flaky test_cancel_post_init on asyncio 3.13+ (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/714\"\u003e#714\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/MagicStack/uvloop/commit/c5f7debaabe98bba70859aa0120db243775c255c\"\u003e\u003ccode\u003ec5f7deb\u003c/code\u003e\u003c/a\u003e uvloop 0.23.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/f7c054738fb773e37e11fd86befc12e9408c7cd9\"\u003e\u003ccode\u003ef7c0547\u003c/code\u003e\u003c/a\u003e Add Python 3.15 to CI and fix test issues (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/e8efea407c783b0d9ad6993cfe1e3a56d1b1dc2e\"\u003e\u003ccode\u003ee8efea4\u003c/code\u003e\u003c/a\u003e Upgrade libuv to v1.52.1 (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/3cbb09560ed1753089133a3925b130ec5e151826\"\u003e\u003ccode\u003e3cbb095\u003c/code\u003e\u003c/a\u003e feat: support eager_start kwarg (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/748\"\u003e#748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/0582f946aeca3a9e9af08c3abe7f812bdbc6f91d\"\u003e\u003ccode\u003e0582f94\u003c/code\u003e\u003c/a\u003e Add thread name prefix to the default thread pool executor (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/963a5f3e141446884fb408abb012d4de1238d06b\"\u003e\u003ccode\u003e963a5f3\u003c/code\u003e\u003c/a\u003e Support any number of flags in UVLOOP_OPT_CFLAGS (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/630\"\u003e#630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/173e88cfcdae8edc1763dd9915087f5136b568aa\"\u003e\u003ccode\u003e173e88c\u003c/code\u003e\u003c/a\u003e Get rid of wheel as a build dependency (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/696\"\u003e#696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/b74c2f1c934382924d4ded8e3d68457be1d27afb\"\u003e\u003ccode\u003eb74c2f1\u003c/code\u003e\u003c/a\u003e Update the example to work with 3.14 (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/710\"\u003e#710\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/dc680eb20c526d8babacaf4751a12f51431ea246\"\u003e\u003ccode\u003edc680eb\u003c/code\u003e\u003c/a\u003e Detach socket on create_connection cancellation to prevent fd double-close (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/uvloop/commit/6cd24cbb84f31c47a0820320705f421e7f0defe0\"\u003e\u003ccode\u003e6cd24cb\u003c/code\u003e\u003c/a\u003e fix: explicit yield after run_in_executor as it was implicitly needed (\u003ca href=\"https://redirect.github.com/MagicStack/uvloop/issues/743\"\u003e#743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/uvloop/compare/v0.21.0...v0.23.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.121.3 to 0.128.8\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.128.8\u003c/h2\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix grammar in \u003ccode\u003edocs/en/docs/tutorial/first-steps.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14708\"\u003e#14708\u003c/a\u003e by \u003ca href=\"https://github.com/SanjanaS10\"\u003e\u003ccode\u003e@​SanjanaS10\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🔨 Tweak PDM hook script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14895\"\u003e#14895\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 build setup for \u003ccode\u003efastapi-slim\u003c/code\u003e, deprecate it, and make it only depend on \u003ccode\u003efastapi\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14894\"\u003e#14894\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.128.7\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Show a clear error on attempt to include router into itself. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14258\"\u003e#14258\u003c/a\u003e by \u003ca href=\"https://github.com/JavierSanchezCastro\"\u003e\u003ccode\u003e@​JavierSanchezCastro\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✨ Replace \u003ccode\u003edict\u003c/code\u003e by \u003ccode\u003eMapping\u003c/code\u003e on \u003ccode\u003eHTTPException.headers\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/12997\"\u003e#12997\u003c/a\u003e by \u003ca href=\"https://github.com/rijenkii\"\u003e\u003ccode\u003e@​rijenkii\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♻️ Simplify reading files in memory, do it sequentially instead of (fake) parallel. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14884\"\u003e#14884\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📝 Use \u003ccode\u003edfn\u003c/code\u003e tag for definitions instead of \u003ccode\u003eabbr\u003c/code\u003e in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14744\"\u003e#14744\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✅ Tweak comment in test to reference PR. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14885\"\u003e#14885\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 LLM-prompt for \u003ccode\u003eabbr\u003c/code\u003e and \u003ccode\u003edfn\u003c/code\u003e tags. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14747\"\u003e#14747\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✅ Test order for the submitted byte Files. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14828\"\u003e#14828\u003c/a\u003e by \u003ca href=\"https://github.com/valentinDruzhinin\"\u003e\u003ccode\u003e@​valentinDruzhinin\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Configure \u003ccode\u003etest\u003c/code\u003e workflow to run tests with \u003ccode\u003einline-snapshot=review\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14876\"\u003e#14876\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\u003ch2\u003e0.128.6\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eon_startup\u003c/code\u003e and \u003ccode\u003eon_shutdown\u003c/code\u003e parameters of \u003ccode\u003eAPIRouter\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14873\"\u003e#14873\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\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14843\"\u003e#14843\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Fix parameterized tests with snapshots. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14875\"\u003e#14875\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\u003ch2\u003e0.128.5\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Refactor and simplify Pydantic v2 (and v1) compatibility internal utils. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14862\"\u003e#14862\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\u003eInternal\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/bdd20051c42d08762b2cdcc6571e4356014de572\"\u003e\u003ccode\u003ebdd2005\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1ed9bd49230b192bb531f4195d3d6a309261a777\"\u003e\u003ccode\u003e1ed9bd4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/aac30fd7071d79798130137728aeb363c8c5f695\"\u003e\u003ccode\u003eaac30fd\u003c/code\u003e\u003c/a\u003e 🔨 Tweak PDM hook script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14895\"\u003e#14895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/417f1ee07825c6f4e983629bee6039857197112f\"\u003e\u003ccode\u003e417f1ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ffb8965260c71657f26644673f218b99b1315cc7\"\u003e\u003ccode\u003effb8965\u003c/code\u003e\u003c/a\u003e ♻️ Update build setup for \u003ccode\u003efastapi-slim\u003c/code\u003e, deprecate it, and make it only depe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/93fa935fb8ac1c40488da7bf9b134466588ffaee\"\u003e\u003ccode\u003e93fa935\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f0f3e7a113b7771388aef6d4a4cb863ce3890d9c\"\u003e\u003ccode\u003ef0f3e7a\u003c/code\u003e\u003c/a\u003e 📝 Fix grammar in \u003ccode\u003edocs/en/docs/tutorial/first-steps.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14708\"\u003e#14708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8f82c94de0ff641a239db59e58dfdc6010a4b26a\"\u003e\u003ccode\u003e8f82c94\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.128.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5bb3423205daf98f88f14d696d104fea2221028a\"\u003e\u003ccode\u003e5bb3423\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6ce5e3e961876c39d8a60a3a2cb4147a6748d116\"\u003e\u003ccode\u003e6ce5e3e\u003c/code\u003e\u003c/a\u003e ✅ Tweak comment in test to reference PR (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/14885\"\u003e#14885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.121.3...0.128.8\"\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.4 to 3.11.5\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.11.5\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\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.11.5 - 2025-12-06\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eShow simple error message instead of traceback when attempting to\nbuild on unsupported Python versions.\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/fb3eb1f729c7e7b019f780af5695722c99c7c695\"\u003e\u003ccode\u003efb3eb1f\u003c/code\u003e\u003c/a\u003e 3.11.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/52688e02c51c845cde24a46cd1011a6010d10eb8\"\u003e\u003ccode\u003e52688e0\u003c/code\u003e\u003c/a\u003e Record contributors in headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/dc083e87d5262e7dde3ba4b1d2a377b5b065a27c\"\u003e\u003ccode\u003edc083e8\u003c/code\u003e\u003c/a\u003e Further compatibility and build misc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ijl/orjson/commit/18f0186d47fbadd53c9db4e39a442d5b04225418\"\u003e\u003ccode\u003e18f0186\u003c/code\u003e\u003c/a\u003e Compatibility and build misc\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ijl/orjson/compare/3.11.4...3.11.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `apscheduler` from 3.11.1 to 3.11.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed sub-minute interval jobs stalling for the duration of a DST spring-forward gap when the scheduler was configured with a \u003ccode\u003eZoneInfo\u003c/code\u003e time zone, caused by the wakeup delay being computed from the naive wall-clock difference instead of the actual UTC difference (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1103\"\u003e#1103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed imported jobs missing their scheduler and job store links (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\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/agronholm/apscheduler/commit/4308ec95b94069f5dbdddb6c60fb792dfc8c40a4\"\u003e\u003ccode\u003e4308ec9\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ff68780d7f66fe0f505c3a32764005cd004996b9\"\u003e\u003ccode\u003eff68780\u003c/code\u003e\u003c/a\u003e Added a note about weekday numbers in CronTrigger.from_crontab()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/36936e904052e6bfbd03f83e17b03701b7a589fe\"\u003e\u003ccode\u003e36936e9\u003c/code\u003e\u003c/a\u003e Updated actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c0ff7e4ccfcc703db44a905b70c1d6568a6f81fa\"\u003e\u003ccode\u003ec0ff7e4\u003c/code\u003e\u003c/a\u003e Fixed Pyside6 tests failing on Python 3.9 and 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1b782c90edeac787deb3106fb3e5c775b3d6b0cd\"\u003e\u003ccode\u003e1b782c9\u003c/code\u003e\u003c/a\u003e Fixed fixture \u003ccode\u003ecoreapp\u003c/code\u003e not found\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/dc3dde4a34c021f215d120d88fe19ddc66bb8a66\"\u003e\u003ccode\u003edc3dde4\u003c/code\u003e\u003c/a\u003e Test against PySide6 on all Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/18a6f6b637e372730f6325786f97936e6eaa9f77\"\u003e\u003ccode\u003e18a6f6b\u003c/code\u003e\u003c/a\u003e Fixed imported jobs missing their scheduler and job store links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1693db4d8861bf941d299d79a586797ad0ac6467\"\u003e\u003ccode\u003e1693db4\u003c/code\u003e\u003c/a\u003e Fix interval jobs stalling across DST spring-forward with ZoneInfo (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0636bf4931fddb706b948b6781ebbd76058f1443\"\u003e\u003ccode\u003e0636bf4\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/3eb3de8115f1631dc5e2ecce7b00175d34ffbdf9\"\u003e\u003ccode\u003e3eb3de8\u003c/code\u003e\u003c/a\u003e Fixed bad use of pytest.raises()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.11.1...3.11.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-sso` from 0.16.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/releases\"\u003efastapi-sso's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.20.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/270\"\u003etomasvotava/fastapi-sso#270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 5 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/tomasvotava/fastapi-sso/pull/273\"\u003etomasvotava/fastapi-sso#273\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add soundcloud provider by \u003ca href=\"https://github.com/john-9474\"\u003e\u003ccode\u003e@​john-9474\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/272\"\u003etomasvotava/fastapi-sso#272\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/john-9474\"\u003e\u003ccode\u003e@​john-9474\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/272\"\u003etomasvotava/fastapi-sso#272\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/compare/0.19.0...0.20.0\"\u003ehttps://github.com/tomasvotava/fastapi-sso/compare/0.19.0...0.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.19.0\u003c/h2\u003e\n\u003cp\u003e️⚠️ A critical OAuth login CSRF vulnerability caused by missing \u003ccode\u003estate\u003c/code\u003e validation was\nreported by \u003ca href=\"https://github.com/davidbors-snyk\"\u003e\u003ccode\u003e@​davidbors-snyk\u003c/code\u003e\u003c/a\u003e (Snyk Security Labs)\nin \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/266\"\u003e#266\u003c/a\u003e and has been resolved\nin version \u003ccode\u003e0.19.0\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eStarting with \u003ccode\u003efastapi-sso==1.0.0\u003c/code\u003e, OAuth \u003ccode\u003estate\u003c/code\u003e will be backed by a pluggable server-side store\n(in-memory by default, with support for external stores such as \u003ccode\u003eRedis\u003c/code\u003e).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the all group with 11 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/tomasvotava/fastapi-sso/pull/230\"\u003etomasvotava/fastapi-sso#230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/231\"\u003etomasvotava/fastapi-sso#231\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 6 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/tomasvotava/fastapi-sso/pull/232\"\u003etomasvotava/fastapi-sso#232\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all 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/tomasvotava/fastapi-sso/pull/233\"\u003etomasvotava/fastapi-sso#233\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/234\"\u003etomasvotava/fastapi-sso#234\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 2 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/tomasvotava/fastapi-sso/pull/235\"\u003etomasvotava/fastapi-sso#235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/237\"\u003etomasvotava/fastapi-sso#237\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/239\"\u003etomasvotava/fastapi-sso#239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group across 1 directory 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/tomasvotava/fastapi-sso/pull/241\"\u003etomasvotava/fastapi-sso#241\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 5 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/tomasvotava/fastapi-sso/pull/242\"\u003etomasvotava/fastapi-sso#242\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 10 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/tomasvotava/fastapi-sso/pull/247\"\u003etomasvotava/fastapi-sso#247\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/248\"\u003etomasvotava/fastapi-sso#248\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group across 1 directory with 3 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/tomasvotava/fastapi-sso/pull/251\"\u003etomasvotava/fastapi-sso#251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 3 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/tomasvotava/fastapi-sso/pull/252\"\u003etomasvotava/fastapi-sso#252\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the all group with 2 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/tomasvotava/fastapi-sso/pull/253\"\u003etomasvotava/fastapi-sso#253\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group with 2 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/tomasvotava/fastapi-sso/pull/254\"\u003etomasvotava/fastapi-sso#254\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 12 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/tomasvotava/fastapi-sso/pull/259\"\u003etomasvotava/fastapi-sso#259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: enforce state validation by \u003ca href=\"https://github.com/davidbors-snyk\"\u003e\u003ccode\u003e@​davidbors-snyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/267\"\u003etomasvotava/fastapi-sso#267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the all group across 1 directory with 7 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/tomasvotava/fastapi-sso/pull/265\"\u003etomasvotava/fastapi-sso#265\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/266\"\u003e#266\u003c/a\u003e): warn against using state as an arbitrary data transport by \u003ca href=\"https://github.com/tomasvotava\"\u003e\u003ccode\u003e@​tomasvotava\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/269\"\u003etomasvotava/fastapi-sso#269\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/davidbors-snyk\"\u003e\u003ccode\u003e@​davidbors-snyk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/pull/267\"\u003etomasvotava/fastapi-sso#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/compare/0.18.0...0.19.0\"\u003ehttps://github.com/tomasvotava/fastapi-sso/compare/0.18.0...0.19.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\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/tomasvotava/fastapi-sso/commit/60380bba7f8ef58c1226e5e9887a1b2cb377f0a6\"\u003e\u003ccode\u003e60380bb\u003c/code\u003e\u003c/a\u003e bump: =\u0026gt; v0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/33d64d002402324503e2924b4199129e7e5e76f7\"\u003e\u003ccode\u003e33d64d0\u003c/code\u003e\u003c/a\u003e feat: Add soundcloud provider (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/89a1d9a641e26821b27e54f7321345739b10f14c\"\u003e\u003ccode\u003e89a1d9a\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/273\"\u003e#273\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/079dc22aa7a30f656b20aea62091fd89ebb8b8c8\"\u003e\u003ccode\u003e079dc22\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/0b6a2433e7ff259b2dd6a8c8b842aea3e15b0cf0\"\u003e\u003ccode\u003e0b6a243\u003c/code\u003e\u003c/a\u003e docs: fix security notice order\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/c905eafe2d6d7aab5d2b929e53ba98f238fdb21d\"\u003e\u003ccode\u003ec905eaf\u003c/code\u003e\u003c/a\u003e chore: 0.18.0 =\u0026gt; 0.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/94343bf276bed9df0ed0b11fe00661fc65ac57e0\"\u003e\u003ccode\u003e94343bf\u003c/code\u003e\u003c/a\u003e docs(\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/266\"\u003e#266\u003c/a\u003e): warn against using state as an arbitrary data transport (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/d057c1d4db151a180668a03784250315cdb0b1e9\"\u003e\u003ccode\u003ed057c1d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/265\"\u003e#265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/6117d1a5ad498ba57d671e8a059ebe20db5abe02\"\u003e\u003ccode\u003e6117d1a\u003c/code\u003e\u003c/a\u003e fix: enforce state validation (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/267\"\u003e#267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tomasvotava/fastapi-sso/commit/da63c19bca7db0fe8a7e66d03fdf07154ec7182a\"\u003e\u003ccode\u003eda63c19\u003c/code\u003e\u003c/a\u003e chore(deps): bump the all group across 1 directory with 12 updates (\u003ca href=\"https://redirect.github.com/tomasvotava/fastapi-sso/issues/259\"\u003e#259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tomasvotava/fastapi-sso/compare/0.16.0...0.20.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.10.1 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\u003ch2\u003e2.15.0\u003c/h2\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/2.15.0/CHANGELOG.rst\"\u003e2.15.0 changelog\u003c/a\u003e for complete release details.\u003c/p\u003e\n\u003ch2\u003e2.14.0\u003c/h2\u003e\n\u003cp\u003eSee the \u003ca href=\"https://github.com/jpadilla/pyjwt/blob/2.14.0/CHANGELOG.rst\"\u003e2.14.0 changelog\u003c/a\u003e for the complete release details and related security advisories.\u003c/p\u003e\n\u003ch2\u003e2.13.0\u003c/h2\u003e\n\u003ch1\u003ePyJWT 2.13.0 — Security Release\u003c/h1\u003e\n\u003cp\u003eThis release bundles five security fixes plus three additional hardening / spec-compliance changes. We recommend all users upgrade.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx\"\u003e\u003ccode\u003eGHSA-xgmm-8j9v-c9wx\u003c/code\u003e\u003c/a\u003e — JWK JSON accepted as HMAC secret (algorithm confusion).\u003c/strong\u003e \u003ccode\u003eHMACAlgorithm.prepare_key\u003c/code\u003e previously rejected PEM- and SSH-formatted asymmetric keys but did not catch a JWK passed as a raw JSON string. In a verifier configured with both symmetric and asymmetric algorithms in \u003ccode\u003ealgorithms=[…]\u003c/code\u003e and a raw-JSON JWK as the key, an attacker could forge HS256 tokens using the JWK text as the HMAC secret. The guard has been extended to reject any JWK-shaped JSON. \u003cem\u003eReported by \u003ca href=\"https://github.com/aradona91\"\u003e\u003ccode\u003e@​aradona91\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f\"\u003e\u003ccode\u003eGHSA-jq35-7prp-9v3f\u003c/code\u003e\u003c/a\u003e — Algorithm allow-list bypass with \u003ccode\u003ePyJWK\u003c/code\u003e / \u003ccode\u003ePyJWKClient\u003c/code\u003e.\u003c/strong\u003e When verifying with a \u003ccode\u003ePyJWK\u003c/code\u003e, the caller's \u003ccode\u003ealgorithms=[…]\u003c/code\u003e allow-list was checked against the token header \u003ccode\u003ealg\u003c/code\u003e as a string only; actual verification used the algorithm bound to the \u003ccode\u003ePyJWK\u003c/code\u003e. An attacker who controlled a registered JWKS key could sign with one algorithm and advertise another on the header. PyJWT now requires the token header \u003ccode\u003ealg\u003c/code\u003e to match the \u003ccode\u003ePyJWK\u003c/code\u003e's algorithm before verification. \u003cem\u003eReported by \u003ca href=\"https://github.com/sushi-gif\"\u003e\u003ccode\u003e@​sushi-gif\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39\"\u003e\u003ccode\u003eGHSA-w7vc-732c-9m39\u003c/code\u003e\u003c/a\u003e — DoS via base64 decode of unused payload segment when \u003ccode\u003eb64=false\u003c/code\u003e.\u003c/strong\u003e For detached-payload JWS (\u003ccode\u003eb64=false\u003c/code\u003e), the compact-form payload segment was base64-decoded before being discarded in favor of the caller-supplied \u003ccode\u003edetached_payload\u003c/code\u003e. An attacker could inflate the unused segment to force CPU + memory cost without holding a valid signature. The segment is now required to be empty per RFC 7515 Appendix F, and is no longer decoded. \u003cem\u003eReported by \u003ca href=\"https://github.com/thesmartshadow\"\u003e\u003ccode\u003e@​thesmartshadow\u003c/code\u003e\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4\"\u003e\u003ccode\u003eGHSA-993g-76c3-p5m4\u003c/code\u003e\u003c/a\u003e — \u003ccode\u003ePyJWKClient\u003c/code\u003e accepts non-HTTP(S) URIs.\u003c/strong\u003e \u003ccode\u003ePyJWKClient.fetch_data\u003c/code\u003e passed its URI to \u003ccode\u003eurllib.request.urlopen\u003c/code\u003e, which by default also handles \u003ccode\u003efile://\u003c/code\u003e, \u003ccode\u003eftp://\u003c/code\u003e, and \u003ccode\u003edata:\u003c/code\u003e schemes. An application that fed an attacker-influenced URI into \u003ccode\u003ePyJWKClient\u003c/code\u003e could be coerced into reading local files or reaching other unintended schemes. \u003ccode\u003ePyJWKClient\u003c/code\u003e now rejects any URI whose scheme isn't \u003ccode\u003ehttp\u003c/code\u003e or \u003ccode\u003ehttps\u003c/code\u003e. \u003cem\u003eReported by ...\n\n_Description has been truncated_","html_url":"https://github.com/executiveusa/pauli-comic-funnel/pull/662","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/executiveusa%2Fpauli-comic-funnel/issues/662","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/662/packages"}},{"old_version":"0.143.3","new_version":"0.150.0","update_type":"minor","path":"the python-nonmajor group across 1 directory","pr_created_at":"2026-10-22T04:13:41.000Z","version_change":"0.143.3 → 0.150.0","issue":{"uuid":"5972924696","node_id":"PR_kwDOT4Kv0c8AAAABJ8H_iw","number":459,"state":"open","title":"chore(deps): bump fastapi from 0.143.3 to 0.150.0 in the python-nonmajor group across 1 directory","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-22T04:13:41.000Z","updated_at":"2026-10-23T04:14:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastapi","old_version":"0.143.3","new_version":"0.150.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":"the python-nonmajor group across 1 directory","ecosystem":"pip"},"body":"Bumps the python-nonmajor group with 1 update in the / directory: [fastapi](https://github.com/fastapi/fastapi).\n\nUpdates `fastapi` from 0.143.3 to 0.150.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.150.0\u003c/h2\u003e\n\u003cp\u003eWhen no file is selected, browsers submit a file part with an empty filename and empty content. FastAPI now treats this as missing: required file fields return a validation error, and fields with defaults or default factories use them. Unselected inputs are ignored in lists of files. Named zero-byte files are still accepted.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat unselected browser file inputs as missing. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16534\"\u003e#16534\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.149.0\u003c/h2\u003e\n\u003cp\u003eBrowsers submit empty text inputs as empty strings (\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e). FastAPI now treats empty scalar form values as missing in form models, matching individual \u003ccode\u003eForm\u003c/code\u003e parameters. Required fields return a validation error. Fields with defaults or default factories use them and remain unset in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eEmpty strings inside lists are preserved. Omitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e. JSON requests and direct Pydantic validation are unchanged.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat empty scalar values as missing in form models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16529\"\u003e#16529\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.148.0\u003c/h2\u003e\n\u003cp\u003eDefaults for omitted \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eHeader\u003c/code\u003e, \u003ccode\u003eCookie\u003c/code\u003e, and \u003ccode\u003eForm\u003c/code\u003e parameters and model fields are no longer treated as user input. Defaults are not validated unless \u003ccode\u003evalidate_default=True\u003c/code\u003e is enabled. If you rely on validators running for omitted values, enable default validation with \u003ccode\u003eField(validate_default=True)\u003c/code\u003e for model fields or, for example, \u003ccode\u003eQuery(validate_default=True)\u003c/code\u003e for individual parameters. \u003ccode\u003eBody(validate_default=True)\u003c/code\u003e is now honored too.\u003c/p\u003e\n\u003cp\u003eFor parameter models, applying a default no longer marks a field as explicitly set, so \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e excludes it. Default factories run once, and validation errors no longer include injected defaults in \u003ccode\u003einput\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOmitted boolean form fields still become \u003ccode\u003eFalse\u003c/code\u003e and count as explicitly set.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix default handling for request parameters and models. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16527\"\u003e#16527\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.147.0\u003c/h2\u003e\n\u003cp\u003eOmitted \u003ccode\u003ebool\u003c/code\u003e and \u003ccode\u003ebool | None\u003c/code\u003e form fields are now interpreted as \u003ccode\u003eFalse\u003c/code\u003e, matching unchecked HTML checkboxes. This applies to individual \u003ccode\u003eForm\u003c/code\u003e parameters and form models, including required fields and fields with defaults of \u003ccode\u003eTrue\u003c/code\u003e or \u003ccode\u003eNone\u003c/code\u003e. The inferred value is considered explicitly set, including in \u003ccode\u003emodel_dump(exclude_unset=True)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eJSON requests and direct Pydantic validation are unchanged. See \u003ca href=\"https://fastapi.tiangolo.com/tutorial/request-forms/#boolean-form-fields\"\u003eBoolean Form Fields\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Treat omitted boolean form fields as False. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16523\"\u003e#16523\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Add tests for parameter defaults, nullability, and browser form behavior. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14829\"\u003e#14829\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\u003ch2\u003e0.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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.145.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\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/03002a00b48335fdd8159edb7920157b508d8c15\"\u003e\u003ccode\u003e03002a0\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.150.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16535\"\u003e#16535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2e13450ea624cafd69a528747d3b7272f2ab1c3d\"\u003e\u003ccode\u003e2e13450\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0890e2a32960bb5cc1cfb807dca3a5e10384ec9d\"\u003e\u003ccode\u003e0890e2a\u003c/code\u003e\u003c/a\u003e 🐛 Treat unselected browser file inputs as missing (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16534\"\u003e#16534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4001c90dad1924b6d10624c7523d7264f4bf9f97\"\u003e\u003ccode\u003e4001c90\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.149.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16531\"\u003e#16531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/47fee72b938a63480e040c4878211040c0ea57eb\"\u003e\u003ccode\u003e47fee72\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f214cd34627aa7cff092cb1b7b8f40589e97252a\"\u003e\u003ccode\u003ef214cd3\u003c/code\u003e\u003c/a\u003e 🐛 Treat empty scalar values as missing in form models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16529\"\u003e#16529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e5fc7ef524e3c23d84d55ffe0f64106de4b56326\"\u003e\u003ccode\u003ee5fc7ef\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.148.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16528\"\u003e#16528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6f88a4775b94940a686270621bbdf5292052394d\"\u003e\u003ccode\u003e6f88a47\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/32240026ad8bdea0b78fd06ac607bba7e4d9da8a\"\u003e\u003ccode\u003e3224002\u003c/code\u003e\u003c/a\u003e 🐛 Fix default handling for request parameters and models (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16527\"\u003e#16527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f63265848ef3caa5be5deba05ec6eabb169d9fb2\"\u003e\u003ccode\u003ef632658\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.147.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16524\"\u003e#16524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.3...0.150.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/sonoxo/gpt-doug-llm/pull/459","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonoxo%2Fgpt-doug-llm/issues/459","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/459/packages"}},{"old_version":"0.141.1","new_version":"0.146.0","update_type":"minor","path":null,"pr_created_at":"2026-10-22T04:08:46.000Z","version_change":"0.141.1 → 0.146.0","issue":{"uuid":"5972877651","node_id":"PR_kwDOPuzaQs8AAAABJ8Fmhw","number":187,"state":"closed","title":"security(deps): bump fastapi from 0.141.1 to 0.146.0","user":"dependabot[bot]","labels":["security","dependencies","python"],"assignees":["arkalia-luna-system"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-23T04:09:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-22T04:08:46.000Z","updated_at":"2026-10-23T04:09:58.000Z","time_to_close":86470,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"security(deps)","packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.146.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.141.1 to 0.146.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.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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.145.0\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16518\"\u003e#16518\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📝 Document URL paths in templates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16517\"\u003e#16517\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.144.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add WebSocket support to security dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/10147\"\u003e#10147\u003c/a\u003e by \u003ca href=\"https://github.com/mnixry\"\u003e\u003ccode\u003e@​mnixry\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9383\"\u003e#9383\u003c/a\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.4\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add httpx2 to optional dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16512\"\u003e#16512\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \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\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/3070b5105fe02c4afdba5e3aea6c2cf2e3796c7f\"\u003e\u003ccode\u003e3070b51\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.146.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16521\"\u003e#16521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a17bd595ae17d5b8ec01f2acc291f36844d478fe\"\u003e\u003ccode\u003ea17bd59\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/45c419938435d668a85a2e81bb9ac41495f8a648\"\u003e\u003ccode\u003e45c4199\u003c/code\u003e\u003c/a\u003e 🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16520\"\u003e#16520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/129c9cfcd33c3ed4371c9674e724fd838a292e2b\"\u003e\u003ccode\u003e129c9cf\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.145.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16519\"\u003e#16519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/475b46638fd2ea6608f80418a6333a9107340e28\"\u003e\u003ccode\u003e475b466\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a37a162de602049ab65595a98d88a75996ee6814\"\u003e\u003ccode\u003ea37a162\u003c/code\u003e\u003c/a\u003e 🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16\"\u003e#16\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0ab3e037a6bd406ae8462841864b5c6337c8b329\"\u003e\u003ccode\u003e0ab3e03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f940b1b724626e74b944377051a801e0cd7686c\"\u003e\u003ccode\u003e4f940b1\u003c/code\u003e\u003c/a\u003e 📝 Document URL paths in templates (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16517\"\u003e#16517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9528746e3493a1cdd17da2eff97c48ef65290713\"\u003e\u003ccode\u003e9528746\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.144.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16516\"\u003e#16516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c18732cd43202c4cb310a8e6c1d75c2a6020294d\"\u003e\u003ccode\u003ec18732c\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.146.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=fastapi\u0026package-manager=pip\u0026previous-version=0.141.1\u0026new-version=0.146.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/arkalia-luna-system/arkalia-cia/pull/187","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkalia-luna-system%2Farkalia-cia/issues/187","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/187/packages"}},{"old_version":"\u003e=0.115","new_version":"\u003e=0.146.0","update_type":null,"path":"/backend","pr_created_at":"2026-10-22T01:43:06.000Z","version_change":"\u003e=0.115 → \u003e=0.146.0","issue":{"uuid":"5971499475","node_id":"PR_kwDOVS6YRc8AAAABJ7Aalw","number":4,"state":"closed","title":"build(deps): Update fastapi requirement from \u003e=0.115 to \u003e=0.146.0 in /backend","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-22T07:09:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-22T01:43:06.000Z","updated_at":"2026-10-22T07:09:32.000Z","time_to_close":19575,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Update","packages":[{"name":"fastapi","old_version":"\u003e=0.115","new_version":"\u003e=0.146.0","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/backend","ecosystem":"pip"},"body":"Updates the requirements on [fastapi](https://github.com/fastapi/fastapi) 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/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.146.0\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI()\u003c/code\u003e is deprecated. Configure the server with \u003ccode\u003efastapi run --root-path /api/v1\u003c/code\u003e instead.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16520\"\u003e#16520\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/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/fastapi/fastapi/commit/3070b5105fe02c4afdba5e3aea6c2cf2e3796c7f\"\u003e\u003ccode\u003e3070b51\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.146.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16521\"\u003e#16521\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a17bd595ae17d5b8ec01f2acc291f36844d478fe\"\u003e\u003ccode\u003ea17bd59\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/45c419938435d668a85a2e81bb9ac41495f8a648\"\u003e\u003ccode\u003e45c4199\u003c/code\u003e\u003c/a\u003e 🗑️ Deprecate the \u003ccode\u003eroot_path\u003c/code\u003e parameter in \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16520\"\u003e#16520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/129c9cfcd33c3ed4371c9674e724fd838a292e2b\"\u003e\u003ccode\u003e129c9cf\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.145.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16519\"\u003e#16519\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/475b46638fd2ea6608f80418a6333a9107340e28\"\u003e\u003ccode\u003e475b466\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/a37a162de602049ab65595a98d88a75996ee6814\"\u003e\u003ccode\u003ea37a162\u003c/code\u003e\u003c/a\u003e 🔥 Remove deprecated \u003ccode\u003eopenapi_prefix\u003c/code\u003e and unused \u003ccode\u003e**extra\u003c/code\u003e from \u003ccode\u003eFastAPI\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16\"\u003e#16\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0ab3e037a6bd406ae8462841864b5c6337c8b329\"\u003e\u003ccode\u003e0ab3e03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f940b1b724626e74b944377051a801e0cd7686c\"\u003e\u003ccode\u003e4f940b1\u003c/code\u003e\u003c/a\u003e 📝 Document URL paths in templates (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16517\"\u003e#16517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9528746e3493a1cdd17da2eff97c48ef65290713\"\u003e\u003ccode\u003e9528746\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.144.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16516\"\u003e#16516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c18732cd43202c4cb310a8e6c1d75c2a6020294d\"\u003e\u003ccode\u003ec18732c\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.146.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/Nikhil-creat/cloudpulse-ai/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nikhil-creat%2Fcloudpulse-ai/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"}},{"old_version":"0.143.0","new_version":"0.143.5","update_type":"patch","path":"/api","pr_created_at":"2026-10-21T09:55:24.000Z","version_change":"0.143.0 → 0.143.5","issue":{"uuid":"5958309641","node_id":"PR_kwDOUntQxM8AAAABJwamMA","number":272,"state":"open","title":"chore(deps): bump fastapi from 0.143.0 to 0.143.5 in /api","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":true,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-21T09:55:24.000Z","updated_at":"2026-10-21T09:55:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.5","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/api","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.143.5.\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.5\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/9383\"\u003e#9383\u003c/a\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.143.4\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Add httpx2 to optional dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16512\"\u003e#16512\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/4bf5ee9098d7b042afb54f452a92f0aabf6050be\"\u003e\u003ccode\u003e4bf5ee9\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.5 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16515\"\u003e#16515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6e9caf886612b05325488c1ba4e8a1a8daa229d6\"\u003e\u003ccode\u003e6e9caf8\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fab6eeacae4a37d983f545f4cb3479f101942d58\"\u003e\u003ccode\u003efab6eea\u003c/code\u003e\u003c/a\u003e 🐛 Fix handling of empty value for \u003ccode\u003ebyte\u003c/code\u003e file list parameter (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/9383\"\u003e#9383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b23d78f2ce4e7b3ea48a59f51ca249690d9fd02c\"\u003e\u003ccode\u003eb23d78f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.4 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16513\"\u003e#16513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4c5dca92aa0a3462f7b5d21c3e483086e92982ed\"\u003e\u003ccode\u003e4c5dca9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5bebde9c30bab8c071a563f2058c2d7504cdeeea\"\u003e\u003ccode\u003e5bebde9\u003c/code\u003e\u003c/a\u003e ⬆️ Add httpx2 to optional dependencies (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16512\"\u003e#16512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\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.143.0...0.143.5\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.143.0\u0026new-version=0.143.5)](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/upayanmazumder/rankstack/pull/272","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/upayanmazumder%2Frankstack/issues/272","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/272/packages"}},{"old_version":"0.143.0","new_version":"0.143.3","update_type":"patch","path":"/backend","pr_created_at":"2026-10-21T07:54:54.000Z","version_change":"0.143.0 → 0.143.3","issue":{"uuid":"5956613014","node_id":"PR_kwDOU0Rox88AAAABJvDm3w","number":14,"state":"open","title":"Bump fastapi from 0.143.0 to 0.143.3 in /backend","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-21T07:54:54.000Z","updated_at":"2026-10-21T07:55:59.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\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=fastapi\u0026package-manager=uv\u0026previous-version=0.143.0\u0026new-version=0.143.3)](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/kanat-m/informatics-research2/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanat-m%2Finformatics-research2/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"}},{"old_version":"0.141.1","new_version":"0.143.0","update_type":"minor","path":null,"pr_created_at":"2026-10-21T07:14:07.000Z","version_change":"0.141.1 → 0.143.0","issue":{"uuid":"5956080873","node_id":"PR_kwDOKznBOM8AAAABJuoZLQ","number":14469,"state":"closed","title":"Bump the python group with 14 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-21T07:24:19.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-21T07:14:07.000Z","updated_at":"2026-10-21T07:24:29.000Z","time_to_close":612,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":14,"packages":[{"name":"typer","old_version":"0.27.1","new_version":"0.27.3","repository_url":"https://github.com/fastapi/typer"},{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.0","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.52.1","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic"},{"name":"datasets","old_version":"4.3.0","new_version":"5.1.0","repository_url":"https://github.com/huggingface/datasets"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [typer](https://github.com/fastapi/typer), [huggingface-hub](https://github.com/huggingface/huggingface_hub), [fastapi](https://github.com/fastapi/fastapi), [uvicorn](https://github.com/Kludex/uvicorn), [pydantic](https://github.com/pydantic/pydantic), [datasets](https://github.com/huggingface/datasets), [ddgs](https://github.com/deedy5/ddgs), [cryptography](https://github.com/pyca/cryptography), pymupdf4llm, [transformers](https://github.com/huggingface/transformers), [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes), [torch](https://github.com/pytorch/pytorch), [torchvision](https://github.com/pytorch/vision) and [setuptools-scm](https://github.com/pypa/setuptools-scm) to permit the latest version.\nUpdates `typer` from 0.27.1 to 0.27.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/typer/releases\"\u003etyper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.27.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Escape terminal control characters in error messages. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1972\"\u003e#1972\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1969\"\u003e#1969\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 urllib3 from 2.7.0 to 2.8.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1968\"\u003e#1968\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 pymdown-extensions from 11.0 to 11.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1924\"\u003e#1924\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 7 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1966\"\u003e#1966\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 cryptography from 48.0.1 to 50.0.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1920\"\u003e#1920\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1967\"\u003e#1967\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1965\"\u003e#1965\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 anyio from 4.12.0 to 4.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1959\"\u003e#1959\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✅ Fix flaky \u003ccode\u003eapp_dir\u003c/code\u003e and \u003ccode\u003elaunch\u003c/code\u003e tutorial tests under \u003ccode\u003exdist\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1951\"\u003e#1951\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 8 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1948\"\u003e#1948\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/typer/pull/1949\"\u003e#1949\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1950\"\u003e#1950\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1947\"\u003e#1947\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.27.2\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Create \u003ccode\u003eexceptions\u003c/code\u003e module and \u003ccode\u003eTyperException\u003c/code\u003e base class. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1942\"\u003e#1942\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\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🐛 Fix showing \u003ccode\u003efast\u003c/code\u003e button as external link in animated terminals in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1912\"\u003e#1912\u003c/a\u003e by \u003ca href=\"https://github.com/phalberg\"\u003e\u003ccode\u003e@​phalberg\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⬆️ Bump setup-uv action to 10.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1940\"\u003e#1940\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👷 Migrate automatic labels to Latest Changes. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1931\"\u003e#1931\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👷 Remove legacy label check. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1930\"\u003e#1930\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 PR Submit for pull requests. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1928\"\u003e#1928\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 GitHub CLI for Git authentication. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1927\"\u003e#1927\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 PR Push commit identity. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1926\"\u003e#1926\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🔒 Replace pre-commit PAT with PR Push. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1923\"\u003e#1923\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👷 Remove Zensical docs cache. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1922\"\u003e#1922\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🔥 Remove the old Latest Changes workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1921\"\u003e#1921\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 the python-packages group with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1917\"\u003e#1917\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 pymdown-extensions from 10.21.3 to 11.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1910\"\u003e#1910\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 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1916\"\u003e#1916\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/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/fastapi/typer/blob/master/docs/release-notes.md\"\u003etyper's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.27.3 (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Escape terminal control characters in error messages. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1972\"\u003e#1972\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\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1969\"\u003e#1969\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 urllib3 from 2.7.0 to 2.8.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1968\"\u003e#1968\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 pymdown-extensions from 11.0 to 11.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1924\"\u003e#1924\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 7 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1966\"\u003e#1966\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 cryptography from 48.0.1 to 50.0.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1920\"\u003e#1920\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1967\"\u003e#1967\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1965\"\u003e#1965\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 anyio from 4.12.0 to 4.14.2. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1959\"\u003e#1959\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✅ Fix flaky \u003ccode\u003eapp_dir\u003c/code\u003e and \u003ccode\u003elaunch\u003c/code\u003e tutorial tests under \u003ccode\u003exdist\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1951\"\u003e#1951\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 8 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1948\"\u003e#1948\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/typer/pull/1949\"\u003e#1949\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1950\"\u003e#1950\u003c/a\u003e by \u003ca href=\"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 the github-actions group with 4 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1947\"\u003e#1947\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.27.2 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Create \u003ccode\u003eexceptions\u003c/code\u003e module and \u003ccode\u003eTyperException\u003c/code\u003e base class. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1942\"\u003e#1942\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\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🐛 Fix showing \u003ccode\u003efast\u003c/code\u003e button as external link in animated terminals in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1912\"\u003e#1912\u003c/a\u003e by \u003ca href=\"https://github.com/phalberg\"\u003e\u003ccode\u003e@​phalberg\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⬆️ Bump setup-uv action to 10.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1940\"\u003e#1940\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👷 Migrate automatic labels to Latest Changes. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1931\"\u003e#1931\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👷 Remove legacy label check. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1930\"\u003e#1930\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 PR Submit for pull requests. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1928\"\u003e#1928\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 GitHub CLI for Git authentication. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1927\"\u003e#1927\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 PR Push commit identity. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1926\"\u003e#1926\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🔒 Replace pre-commit PAT with PR Push. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1923\"\u003e#1923\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👷 Remove Zensical docs cache. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1922\"\u003e#1922\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🔥 Remove the old Latest Changes workflow. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1921\"\u003e#1921\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 the python-packages group with 6 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1917\"\u003e#1917\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 pymdown-extensions from 10.21.3 to 11.0. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1910\"\u003e#1910\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 5 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/typer/pull/1916\"\u003e#1916\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/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/fastapi/typer/commit/b15210b71a5b9b35be82a1ffdb172ef7b3a89d85\"\u003e\u003ccode\u003eb15210b\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.27.3 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1973\"\u003e#1973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/8bfe6d1599d19fd2175722dc9b9cb576e331c43d\"\u003e\u003ccode\u003e8bfe6d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/a74010f845e8771e574cc9a033cd53f449383c61\"\u003e\u003ccode\u003ea74010f\u003c/code\u003e\u003c/a\u003e 🐛 Escape terminal control characters in error messages (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1972\"\u003e#1972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/11b083b92126fb8e149ab9e7d5c9a0f5594dfe58\"\u003e\u003ccode\u003e11b083b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/910a474f3071012c3c512aad3b6e10c6e9af9dcf\"\u003e\u003ccode\u003e910a474\u003c/code\u003e\u003c/a\u003e ⬆ Bump pyjwt from 2.13.0 to 2.15.0 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1969\"\u003e#1969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/33b1eec0e20df3695de0b4ad7af0dff89608b12b\"\u003e\u003ccode\u003e33b1eec\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/62f1d4acd95c52c12490d313d2dea27846d23f46\"\u003e\u003ccode\u003e62f1d4a\u003c/code\u003e\u003c/a\u003e ⬆ Bump urllib3 from 2.7.0 to 2.8.0 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1968\"\u003e#1968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/ffc8b9ae61d98fd48d52494e3f7286fda763fbe5\"\u003e\u003ccode\u003effc8b9a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/1b7ceee5da625df3c679a55f9e6d25e31ab5f5c2\"\u003e\u003ccode\u003e1b7ceee\u003c/code\u003e\u003c/a\u003e ⬆ Bump pymdown-extensions from 11.0 to 11.0.1 (\u003ca href=\"https://redirect.github.com/fastapi/typer/issues/1924\"\u003e#1924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/typer/commit/40c39c11ce29ea0272134a0a50b2668105cd714f\"\u003e\u003ccode\u003e40c39c1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/typer/compare/0.27.1...0.27.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `huggingface-hub` 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 `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.52.1 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\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.1...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.4 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.4...v2.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `datasets` from 4.3.0 to 5.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/datasets/releases\"\u003edatasets's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0\u003c/h2\u003e\n\u003ch2\u003eNew Formats\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHarbor\u003c/strong\u003e ⚓: RL environments:\n\u003cul\u003e\n\u003cli\u003eAdd harbor benchmarks by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8729\"\u003ehuggingface/datasets#8729\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVortex\u003c/strong\u003e 🌀: High performance columnar data\n\u003cul\u003e\n\u003cli\u003eAdd support for datasets backed by vortex file format by \u003ca href=\"https://github.com/robert3005\"\u003e\u003ccode\u003e@​robert3005\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8502\"\u003ehuggingface/datasets#8502\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBio formats\u003c/strong\u003e 🧬: store biological data like DNA sequences, protein chains, and 3D molecular structures\n\u003cul\u003e\n\u003cli\u003efeat(fasta): add lightweight FASTA file format support by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7923\"\u003ehuggingface/datasets#7923\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecode BioSequence and BioStructure records with universal newlines by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8600\"\u003ehuggingface/datasets#8600\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd lightweight FASTQ file format support by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7924\"\u003ehuggingface/datasets#7924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add GenBank file format support for biological sequence data by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7951\"\u003ehuggingface/datasets#7951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd lightweight PDB (Protein Data Bank) file support by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7926\"\u003ehuggingface/datasets#7926\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Add mmCIF file support for macromolecular structures by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/7925\"\u003ehuggingface/datasets#7925\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(features): add BioSequence and BioStructure decodable features by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8542\"\u003ehuggingface/datasets#8542\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDataset Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a strategy argument to split_dataset_by_node for iterable datasets by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8565\"\u003ehuggingface/datasets#8565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow IterableDataset.push_to_hub num_shards above dataset.num_shards by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8716\"\u003ehuggingface/datasets#8716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther improvements and bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix fixed size binary by \u003ca href=\"https://github.com/Alex-PLACET\"\u003e\u003ccode\u003e@​Alex-PLACET\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8281\"\u003ehuggingface/datasets#8281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix offline simulation with huggingface_hub 1.27 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/datasets/pull/8414\"\u003ehuggingface/datasets#8414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix info from data_dir/data_files or malformed yaml by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8462\"\u003ehuggingface/datasets#8462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eForward iter_arrow, is_typed and features from RepeatExamplesIterable by \u003ca href=\"https://github.com/ebarkhordar\"\u003e\u003ccode\u003e@​ebarkhordar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8395\"\u003ehuggingface/datasets#8395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix archive path check allowing sibling-directory escapes by \u003ca href=\"https://github.com/icn5381\"\u003e\u003ccode\u003e@​icn5381\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8490\"\u003ehuggingface/datasets#8490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edisallow hdf5 external links by \u003ca href=\"https://github.com/lhoestq\"\u003e\u003ccode\u003e@​lhoestq\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8523\"\u003ehuggingface/datasets#8523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edeepcopy\u003c/code\u003e bottleneck in state_dict() by \u003ca href=\"https://github.com/yuxin00j\"\u003e\u003ccode\u003e@​yuxin00j\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8387\"\u003ehuggingface/datasets#8387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize PyArrow block shuffling with dynamic rebatched chunk interleaving by \u003ca href=\"https://github.com/yuxin00j\"\u003e\u003ccode\u003e@​yuxin00j\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8407\"\u003ehuggingface/datasets#8407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Pdf.decode_example raising TypeError on remote non-Hub paths by \u003ca href=\"https://github.com/behroozazarkhalili\"\u003e\u003ccode\u003e@​behroozazarkhalili\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8566\"\u003ehuggingface/datasets#8566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dead PDF processing link in README by \u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8512\"\u003ehuggingface/datasets#8512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eForward max_buffer_input_shards from IterableDatasetDict.shuffle by \u003ca href=\"https://github.com/vineethsaivs\"\u003e\u003ccode\u003e@​vineethsaivs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8594\"\u003ehuggingface/datasets#8594\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve storage options across URL hops by \u003ca href=\"https://github.com/tandede\"\u003e\u003ccode\u003e@​tandede\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8496\"\u003ehuggingface/datasets#8496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter error when a column written as null gets values in a later batch by \u003ca href=\"https://github.com/ebarkhordar\"\u003e\u003ccode\u003e@​ebarkhordar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8591\"\u003ehuggingface/datasets#8591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdvance the user-supplied generator in Dataset.shuffle even on cache hits by \u003ca href=\"https://github.com/BenYang12\"\u003e\u003ccode\u003e@​BenYang12\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8589\"\u003ehuggingface/datasets#8589\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump fsspec upper bound to 2026.7.0 by \u003ca href=\"https://github.com/roshanjrajan\"\u003e\u003ccode\u003e@​roshanjrajan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8561\"\u003ehuggingface/datasets#8561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShard the sources when skipping a distributed IterableDataset by \u003ca href=\"https://github.com/ebarkhordar\"\u003e\u003ccode\u003e@​ebarkhordar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8569\"\u003ehuggingface/datasets#8569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix infinite repetition of empty iterable datasets by \u003ca href=\"https://github.com/Jokasa7\"\u003e\u003ccode\u003e@​Jokasa7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8577\"\u003ehuggingface/datasets#8577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReject a non-callable generator in GeneratorConfig by \u003ca href=\"https://github.com/LeSingh1\"\u003e\u003ccode\u003e@​LeSingh1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8585\"\u003ehuggingface/datasets#8585\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix async map checkpoint accounting across repeated resumes by \u003ca href=\"https://github.com/SBrouck\"\u003e\u003ccode\u003e@​SBrouck\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8575\"\u003ehuggingface/datasets#8575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[httpx migration] Import httpx from huggingface_hub, require huggingface_hub\u0026gt;=1.31.0 by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8598\"\u003ehuggingface/datasets#8598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: enable Dependabot weekly GitHub Actions bumps by \u003ca href=\"https://github.com/hf-dependantbot-rollout\"\u003e\u003ccode\u003e@​hf-dependantbot-rollout\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8221\"\u003ehuggingface/datasets#8221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[docs] Fix legacy hf CLI references (datasets) by \u003ca href=\"https://github.com/Wauplin\"\u003e\u003ccode\u003e@​Wauplin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/huggingface/datasets/pull/8657\"\u003ehuggingface/datasets#8657\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eScope GITHUB_TOKEN permissions per job by \u003ca href=\"https://github.com/hf-s...\n\n_Description has been truncated_","html_url":"https://github.com/unslothai/unsloth/pull/14469","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/unslothai%2Funsloth/issues/14469","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14469/packages"}},{"old_version":"0.143.0","new_version":"0.143.3","update_type":"patch","path":null,"pr_created_at":"2026-10-20T21:14:31.000Z","version_change":"0.143.0 → 0.143.3","issue":{"uuid":"5949764404","node_id":"PR_kwDOUdcCh88AAAABJpnriw","number":124,"state":"closed","title":"fix(deps): bump fastapi from 0.143.0 to 0.143.3","user":"dependabot[bot]","labels":["dependencies","released","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-20T21:15:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-20T21:14:31.000Z","updated_at":"2026-10-20T21:17:16.000Z","time_to_close":66,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"fix(deps)","packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.143.0 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\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=fastapi\u0026package-manager=uv\u0026previous-version=0.143.0\u0026new-version=0.143.3)](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/lukislp/studylife-telegram/pull/124","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukislp%2Fstudylife-telegram/issues/124","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/124/packages"}},{"old_version":"0.142.1","new_version":"0.143.3","update_type":"minor","path":null,"pr_created_at":"2026-10-20T15:25:52.000Z","version_change":"0.142.1 → 0.143.3","issue":{"uuid":"5944455776","node_id":"PR_kwDOUz2C688AAAABJlU_Pw","number":751,"state":"closed","title":"chore(deps): Bump the runtime-minor-patch group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-21T04:02:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-20T15:25:52.000Z","updated_at":"2026-10-21T04:02:52.000Z","time_to_close":45411,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"runtime-minor-patch","update_count":13,"packages":[{"name":"charset-normalizer","old_version":"3.5.1","new_version":"3.5.2","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"fastapi","old_version":"0.142.1","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"markupsafe","old_version":"3.0.3","new_version":"3.0.4","repository_url":"https://github.com/pallets/markupsafe"},{"name":"opentelemetry-api","old_version":"1.45.0","new_version":"1.45.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"pycparser","old_version":"3.0","new_version":"3.11","repository_url":"https://github.com/eliben/pycparser"},{"name":"playwright","old_version":"1.63.0","new_version":"1.64.0","repository_url":"https://github.com/microsoft/playwright-python"},{"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.19.0","new_version":"6.21.1","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"sqlalchemy","old_version":"2.1.1","new_version":"2.1.5","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"truststore","old_version":"0.10.4","new_version":"0.10.5","repository_url":"https://github.com/sethmlarson/truststore"},{"name":"tzdata","old_version":"2026.4","new_version":"2026.5","repository_url":"https://github.com/python/tzdata"}],"path":null,"ecosystem":"pip"},"body":"Bumps the runtime-minor-patch group with 13 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| [fastapi](https://github.com/fastapi/fastapi) | `0.142.1` | `0.143.3` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.3` | `3.0.4` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.45.0` | `1.45.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `3.0` | `3.11` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.63.0` | `1.64.0` |\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.19.0` | `6.21.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.1.1` | `2.1.5` |\n| [starlette](https://github.com/Kludex/starlette) | `1.7.0` | `1.8.0` |\n| [truststore](https://github.com/sethmlarson/truststore) | `0.10.4` | `0.10.5` |\n| [tzdata](https://github.com/python/tzdata) | `2026.4` | `2026.5` |\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 `fastapi` from 0.142.1 to 0.143.3\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.142.1...0.143.3\"\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 `opentelemetry-api` from 1.45.0 to 1.45.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/releases\"\u003eopentelemetry-api's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.45.1/0.66b1\u003c/h2\u003e\n\u003cp\u003eThis is a patch release on the previous 1.45.0/0.66b0 release, fixing the issue(s) below.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: make \u003ccode\u003eAnyValue\u003c/code\u003e and \u003ccode\u003eAttributeValue\u003c/code\u003e explicit type aliases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5703\"\u003e#5703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix thread leak bug in resource initialization logic for long running resource detectors (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5706\"\u003e#5706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e: restore \u003ccode\u003erequests\u003c/code\u003e as the default HTTP transport so proxy environment variables such as \u003ccode\u003eHTTPS_PROXY\u003c/code\u003e are honored again (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5714\"\u003e#5714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: fix quadratic time parsing of the \u003ccode\u003etracestate\u003c/code\u003e header and discard \u003ccode\u003etracestate\u003c/code\u003e headers longer than 8192 characters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5746\"\u003e#5746\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/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.45.1/0.66b1 (2026-10-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: make \u003ccode\u003eAnyValue\u003c/code\u003e and \u003ccode\u003eAttributeValue\u003c/code\u003e explicit type\naliases\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5703\"\u003e#5703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix thread leak bug in resource initialization logic for\nlong running resource detectors\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5706\"\u003e#5706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e: restore \u003ccode\u003erequests\u003c/code\u003e as the default\nHTTP transport so proxy environment variables such as \u003ccode\u003eHTTPS_PROXY\u003c/code\u003e are\nhonored again\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5714\"\u003e#5714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: fix quadratic time parsing of the \u003ccode\u003etracestate\u003c/code\u003e header\nand discard \u003ccode\u003etracestate\u003c/code\u003e headers longer than 8192 characters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5746\"\u003e#5746\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/open-telemetry/opentelemetry-python/commit/14971cef9c84c2354cbaf6871090896fad0f9a1a\"\u003e\u003ccode\u003e14971ce\u003c/code\u003e\u003c/a\u003e Prepare release 1.45.1/0.66b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5752\"\u003e#5752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/44ac26edcee5cc99e03a65d6a1a9978775703e28\"\u003e\u003ccode\u003e44ac26e\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix thread leak bug in resource initialization logic (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/570\"\u003e#570\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/a2ec3f91f1c2b735ccba177eaa77d6019a4428ae\"\u003e\u003ccode\u003ea2ec3f9\u003c/code\u003e\u003c/a\u003e [release/v1.45.x-0.66bx] opentelemetry-exporter-otlp-proto-http: restore requ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d5224bf4ffdf2aee1b592ad238dcc32ca957f26b\"\u003e\u003ccode\u003ed5224bf\u003c/code\u003e\u003c/a\u003e opentelemetry-api: improve performance of tracestate parsing (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5746\"\u003e#5746\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5749\"\u003e#5749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/db61173a56475d4fa1276d16182e46b43db83b9e\"\u003e\u003ccode\u003edb61173\u003c/code\u003e\u003c/a\u003e Declare AnyValue and AttributeValue as explicit type aliases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5703\"\u003e#5703\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5750\"\u003e#5750\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.45.0...v1.45.1\"\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 `playwright` from 1.63.0 to 1.64.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/playwright-python/releases\"\u003eplaywright's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.64.0\u003c/h2\u003e\n\u003ch2\u003e🧰 WebMCP\u003c/h2\u003e\n\u003cp\u003eNew \u003ca href=\"https://playwright.dev/python/docs/api/class-page#page-webmcp\"\u003epage.webmcp\u003c/a\u003e and \u003ca href=\"https://playwright.dev/python/docs/api/class-frame#frame-webmcp\"\u003eframe.webmcp\u003c/a\u003e give access to the tools that a page registers through\nthe experimental \u003ca href=\"https://webmachinelearning.github.io/webmcp/\"\u003eWebMCP\u003c/a\u003e browser API, so you can test them like\nany other part of your app:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003ebrowser = chromium.launch(args=[\u0026quot;--enable-features=WebMCP\u0026quot;])\r\npage = browser.new_page()\r\npage.goto(\u0026quot;https://example.com\u0026quot;)\r\n\u003cp\u003efor tool in page.webmcp.tools():\nprint(tool[\u0026quot;name\u0026quot;], tool[\u0026quot;description\u0026quot;])\u003c/p\u003e\n\u003cp\u003eresult = page.webmcp.call_tool(\u0026quot;add\u0026quot;, {\u0026quot;a\u0026quot;: 2, \u0026quot;b\u0026quot;: 40})\nprint(result[\u0026quot;content\u0026quot;][0][\u0026quot;text\u0026quot;])  # \u0026quot;42\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://playwright.dev/python/docs/getting-started-mcp\"\u003ePlaywright MCP\u003c/a\u003e also supports WebMCP by default, with page-defined tools offered to the agent as \u003ccode\u003ewebmcp_\u0026lt;tool\u0026gt;\u003c/code\u003e. Pass \u003ccode\u003e--no-webmcp\u003c/code\u003e to opt out.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://playwright.dev/python/docs/getting-started-cli\"\u003e\u003ccode\u003eplaywright-cli\u003c/code\u003e\u003c/a\u003e exposes them as well:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eplaywright-cli webmcp-list\r\nplaywright-cli webmcp-call search_catalog --params '{\u0026quot;query\u0026quot;:\u0026quot;cats\u0026quot;}'\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003e🎬 Better videos\u003c/h2\u003e\n\u003cp\u003eVideos can now be recorded at a custom frame rate, and the decorations for actions are styled with plain CSS:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003epage.screencast.start(path=\u0026quot;video.webm\u0026quot;, size={\u0026quot;width\u0026quot;: 1920, \u0026quot;height\u0026quot;: 1080}, fps=60)\r\npage.screencast.show_actions(\r\n    style={\r\n        \u0026quot;point\u0026quot;: \u0026quot;width: 20px; height: 20px; border-radius: 50%; background: red\u0026quot;,\r\n        \u0026quot;highlight\u0026quot;: \u0026quot;outline: 2px solid [#333](https://github.com/microsoft/playwright-python/issues/333); background: rgba(0, 128, 255, .15)\u0026quot;,\r\n        \u0026quot;title\u0026quot;: \u0026quot;font-size: 16px\u0026quot;,\r\n    }\r\n)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ca href=\"https://playwright.dev/python/docs/api/class-browser#browser-new-context-option-record-video-fps\"\u003e\u003ccode\u003erecord_video_fps\u003c/code\u003e\u003c/a\u003e option and new \u003ca href=\"https://playwright.dev/python/docs/api/class-screencast#screencast-start-option-fps\"\u003e\u003ccode\u003efps\u003c/code\u003e\u003c/a\u003e option in\n\u003ca href=\"https://playwright.dev/python/docs/api/class-screencast#screencast-start\"\u003escreencast.start()\u003c/a\u003e. Firefox and WebKit currently capture up to 25 frames per second.\u003c/li\u003e\n\u003cli\u003eNew \u003ca href=\"https://playwright.dev/python/docs/api/class-screencast#screencast-show-actions-option-style\"\u003e\u003ccode\u003estyle\u003c/code\u003e\u003c/a\u003e option takes CSS declarations for the \u003ccode\u003epoint\u003c/code\u003e marker, the target\n\u003ccode\u003ehighlight\u003c/code\u003e and the action \u003ccode\u003etitle\u003c/code\u003e. It replaces the \u003ccode\u003efont_size\u003c/code\u003e option, which is now deprecated.\u003c/li\u003e\n\u003cli\u003eThe cursor stays visible at the last action point, survives navigations and travels along a natural, eased path.\u003c/li\u003e\n\u003cli\u003eVideos are encoded with VP9 instead of VP8, which takes less CPU and produces smaller files of the same or better\nquality.\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/microsoft/playwright-python/commit/387a8a943bb397962f19085c376a301b440029b6\"\u003e\u003ccode\u003e387a8a9\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3252\"\u003e#3252\u003c/a\u003e): devops: publish to PyPI from GitHub Actions with trusted ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/71d2a17728bac8599fbf858e3c3035798d0a6ed4\"\u003e\u003ccode\u003e71d2a17\u003c/code\u003e\u003c/a\u003e chore: roll Playwright to v1.64.0 (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3251\"\u003e#3251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/d566fc568706470588e6bf5f0c0bc9ae39f67f78\"\u003e\u003ccode\u003ed566fc5\u003c/code\u003e\u003c/a\u003e fix(fetch): JSON-stringify NaN and Infinity string data (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3249\"\u003e#3249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/2959d198e2bab16ecc150a9d6cba31310b58ef44\"\u003e\u003ccode\u003e2959d19\u003c/code\u003e\u003c/a\u003e docs(skills): add a skill to prepare a release (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/5313ac253a82cd7e5ff26a57cdb792593bd33e1e\"\u003e\u003ccode\u003e5313ac2\u003c/code\u003e\u003c/a\u003e fix(network): keep blank values in Request.post_data_json for form bodies (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/9d8c50fd869e1445b0b6dbe0a23705240e07fef3\"\u003e\u003ccode\u003e9d8c50f\u003c/code\u003e\u003c/a\u003e chore(codegen): use alphabetical order in the generated API (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3242\"\u003e#3242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/478282f8687f0c33edd170b02cf84d52ffc505a6\"\u003e\u003ccode\u003e478282f\u003c/code\u003e\u003c/a\u003e chore(codegen): generate the public TypedDicts from the docs (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3247\"\u003e#3247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/b8b7155220dc1eeed27de5d791ba918398220050\"\u003e\u003ccode\u003eb8b7155\u003c/code\u003e\u003c/a\u003e fix: raise Error instead of assert for user input validation (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3245\"\u003e#3245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/1de5d37f4c5b50a419d0c18dfd79a428aa016cf4\"\u003e\u003ccode\u003e1de5d37\u003c/code\u003e\u003c/a\u003e fix(network): do not add missing headers when looking them up (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3246\"\u003e#3246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright-python/commit/222a2e04679638e159ba82065614e3c61842c165\"\u003e\u003ccode\u003e222a2e0\u003c/code\u003e\u003c/a\u003e chore(codegen): type _impl_obj in the generated API (\u003ca href=\"https://redirect.github.com/microsoft/playwright-python/issues/3241\"\u003e#3241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/playwright-python/compare/v1.63.0...v1.64.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 `pydantic-core` from 2.46.5 to 2.50.1\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/core-v2.46.5...core-v2.50.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.19.0 to 6.21.1\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.21.1, 2026-10-17\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly open /DCTDecode image data with the Pillow JPEG plugin (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4222\"\u003e#4222\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\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.21.0...6.21.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\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\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e) by \u003ca href=\"https://github.com/JackyHsu-X\"\u003e\u003ccode\u003e@​JackyHsu-X\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\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e) by \u003ca href=\"https://github.com/Zephyr761\"\u003e\u003ccode\u003e@​Zephyr761\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e) by \u003ca href=\"https://github.com/tigger0jk\"\u003e\u003ccode\u003e@​tigger0jk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e) by \u003ca href=\"https://github.com/usmanmateen\"\u003e\u003ccode\u003e@​usmanmateen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.20.1, 2026-10-12\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent cyclic tree handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4188\"\u003e#4188\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\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly read the color operator from a text field's default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4158\"\u003e#4158\u003c/a\u003e) by \u003ca href=\"https://github.com/yaourtv\"\u003e\u003ccode\u003e@​yaourtv\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.0...6.20.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\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\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.21.1, 2026-10-17\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly open /DCTDecode image data with the Pillow JPEG plugin (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.21.0...6.21.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.20.1, 2026-10-12\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent cyclic tree handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOnly read the color operator from a text field's default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4158\"\u003e#4158\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.0...6.20.1\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.20.0, 2026-10-09\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)\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)\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)\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)\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)\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)\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)\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)\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/py-pdf/pypdf/commit/1a6de8d43c3a931b1ab3643c8dee2c9b51a32d42\"\u003e\u003ccode\u003e1a6de8d\u003c/code\u003e\u003c/a\u003e REL: 6.21.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/512d8eb94eb04be1d1c90504e6da2dcef8679e07\"\u003e\u003ccode\u003e512d8eb\u003c/code\u003e\u003c/a\u003e SEC: Only open /DCTDecode image data with the Pillow JPEG plugin (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/7abdc8efdc3b336c838857f0fce6dc67f2914b67\"\u003e\u003ccode\u003e7abdc8e\u003c/code\u003e\u003c/a\u003e DOC: Clarify security PR process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/1145329e8c80e1f72fbbb4001460fb8553236aeb\"\u003e\u003ccode\u003e1145329\u003c/code\u003e\u003c/a\u003e REL: 6.21.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/5ef728f0e16d225c853e89f861ba0a67402fe3f2\"\u003e\u003ccode\u003e5ef728f\u003c/code\u003e\u003c/a\u003e SEC: Improve performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/18bd2981a74479483a0b9507602c58a63d6c9b12\"\u003e\u003ccode\u003e18bd298\u003c/code\u003e\u003c/a\u003e SEC: Limit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9f861003511cc5d732d766bd4f6d3c864998e30b\"\u003e\u003ccode\u003e9f86100\u003c/code\u003e\u003c/a\u003e DEV: Ignore ruff rule ICN001 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4206\"\u003e#4206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/1d64c39ea5e7a02156a400961118e4605592fe14\"\u003e\u003ccode\u003e1d64c39\u003c/code\u003e\u003c/a\u003e ENH: Allow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/14ea59650c139f91912cdac37ef3c690a2ebcfde\"\u003e\u003ccode\u003e14ea596\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/download-artifact from 8.0.1 to 8.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4204\"\u003e#4204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c7c6d2aa0948d6d60b3c3a6512d808b02762d1ea\"\u003e\u003ccode\u003ec7c6d2a\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/upload-artifact from 7.0.1 to 7.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.19.0...6.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.1.1 to 2.1.5\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.5\u003c/h1\u003e\n\u003cp\u003eReleased: October 16, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [feature]\u003c/strong\u003e Added the \u003ccode\u003e_orm.Unmapped\u003c/code\u003e annotation and the\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct, providing a declarative-compatible\napproach to having \u0026quot;excluded\u0026quot; columns in a Declarative model, that is,\ncolumns that are part of the \u003ccode\u003e_schema.Table\u003c/code\u003e but are not mapped,\nreplacing the use of \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e for this\npurpose when using a Declarative mapping.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\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/11917\"\u003e#11917\u003c/a\u003e in version 2.0.36 where an ORM\nenabled \u003ccode\u003e_sql.update()\u003c/code\u003e using WHERE criteria which matched more than\none object present in the \u003ccode\u003e_orm.Session\u003c/code\u003e would expire server-side\nonupdate columns, as well as columns that were SET to a SQL expression, on\nonly one of the matched objects, leaving the remaining objects with stale\nvalues for those attributes. The columns are now expired for all matched\nobjects.\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/13675\"\u003e#13675\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [deprecated]\u003c/strong\u003e Using the \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e or\n\u003ccode\u003e_orm.Mapper.include_properties\u003c/code\u003e parameters on a Declarative\nmapping to exclude attributes that are declared on the class, such as with\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, is deprecated and now emits a deprecation\nwarning.  This use was never supported, and depending on the arguments\npassed to \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, the attribute could remain mapped\nregardless; in particular, as of 2.1 this includes ORM mapped dataclasses\nwhere \u003ccode\u003e_orm.mapped_column.default\u003c/code\u003e is present.  The new\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct should be used instead.  Excluding\ncolumns that are present only in the \u003ccode\u003e_schema.Table\u003c/code\u003e, such as those\nfrom \u003ccode\u003e__table__\u003c/code\u003e, \u003ccode\u003e__table_args__\u003c/code\u003e or table reflection, is not\naffected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eschema\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[schema] [bug]\u003c/strong\u003e Fixed issue where dialect-specific keyword arguments established on a\n\u003ccode\u003eForeignKeyConstraint\u003c/code\u003e, \u003ccode\u003eForeignKey\u003c/code\u003e or\n\u003ccode\u003eCheckConstraint\u003c/code\u003e, such as \u003ccode\u003epostgresql_not_valid\u003c/code\u003e, were not\ncarried along to the copy of the constraint produced by\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 `starlette` from 1.7.0 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/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.8.0\u003c/h2\u003e\n\u003cp\u003eThis release adds HTTP 103 Early Hints, preserves response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e, and stops \u003ccode\u003eFileResponse\u003c/code\u003e transfers when clients disconnect. Starlette now requires Python 3.11.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.response.start\u003c/code\u003e immediately in \u003ccode\u003eGZipMiddleware\u003c/code\u003e for responses with an existing \u003ccode\u003eContent-Encoding\u003c/code\u003e, status \u003ccode\u003e206\u003c/code\u003e, or an excluded content type, instead of waiting for the first body chunk \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3631\"\u003e#3631\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eResolve the multipart charset once per request instead of once per field \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3618\"\u003e#3618\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve response trailers through \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop \u003ccode\u003eFileResponse\u003c/code\u003e transfers when the client disconnects \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3523\"\u003e#3523\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStop multipart range responses when the file ends before a range is complete, instead of looping forever \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3583\"\u003e#3583\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eRange\u003c/code\u003e when \u003ccode\u003eIf-Range\u003c/code\u003e contains a weak ETag \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3567\"\u003e#3567\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003eAllow: GET, HEAD\u003c/code\u003e in \u003ccode\u003eStaticFiles\u003c/code\u003e \u003ccode\u003e405\u003c/code\u003e responses \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3640\"\u003e#3640\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eClose \u003ccode\u003eRequest.stream()\u003c/code\u003e generators deterministically, avoiding \u0026quot;Exception ignored\u0026quot; errors with stacked \u003ccode\u003eBaseHTTPMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3628\"\u003e#3628\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eVary: Cookie\u003c/code\u003e when \u003ccode\u003eSession.pop()\u003c/code\u003e removes an existing key \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3186\"\u003e#3186\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003eMax-Age=0\u003c/code\u003e on the session cookie when \u003ccode\u003eSessionMiddleware\u003c/code\u003e uses \u003ccode\u003emax_age=0\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3651\"\u003e#3651\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBracket IPv6 hostnames in \u003ccode\u003eURL.replace()\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3617\"\u003e#3617\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/starlette/compare/1.7.0...1.8.0\"\u003e1.7.0...1.8.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/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.8.0 (October 13, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release drops Python 3.10 support and adds HTTP 103 Early Hints.\u003c/p\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eRequest.send_early_hints()\u003c/code\u003e for HTTP 103 Early Hints through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3435\"\u003e#3435\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.11 or later, dropping support for Python 3.10 \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3592\"\u003e#3592\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExclude native gRPC media types (\u003ccode\u003eapplication/grpc\u003c/code\u003e and \u003ccode\u003eapplication/grpc+...\u003c/code\u003e) from \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression by default \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3565\"\u003e#3565\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSend \u003ccode\u003ehttp.respon...\n\n_Description has been truncated_","html_url":"https://github.com/MulattoTech/MJobs/pull/751","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MulattoTech%2FMJobs/issues/751","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/751/packages"}},{"old_version":"0.142.0","new_version":"0.143.3","update_type":"minor","path":"/examples/e2e-paid-api","pr_created_at":"2026-10-20T12:44:20.000Z","version_change":"0.142.0 → 0.143.3","issue":{"uuid":"5941849941","node_id":"PR_kwDOUzksb88AAAABJjPplQ","number":7,"state":"open","title":"Bump fastapi from 0.142.0 to 0.143.3 in /examples/e2e-paid-api","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-20T12:44:20.000Z","updated_at":"2026-10-20T12:44:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"fastapi","old_version":"0.142.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":"/examples/e2e-paid-api","ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.142.0 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.142.0...0.143.3\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.142.0\u0026new-version=0.143.3)](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\n\n\u003c!-- This is an auto-generated description by cubic. --\u003e\n---\n## Summary by cubic\nUpdates FastAPI from 0.142.0 to 0.143.3 in the `examples/e2e-paid-api` example.\n\nIncludes fixes for non-finite float serialization in JSONL and SSE streams, blocking frontend fallback file checks, and included route metadata.\n\n**Breaking Changes**\n- Automatic OpenTelemetry exporter setup is now opt-in. To keep the previous behavior, set `FASTAPI_OTEL_AUTO_CONFIGURE=true` or use `FastAPI(telemetry={\"auto_configure\": True})`.\n\n\u003csup\u003eWritten for commit 24fc480ac2a01d41c48f6a8e9aaf0d3e7984ad2a. Summary will update on new commits.\u003c/sup\u003e\n\n\u003ca href=\"https://cubic.dev/pr/PhucNguyen-Dev/back-end-skills/pull/7?utm_source=github\" target=\"_blank\" rel=\"noopener noreferrer\" data-no-image-dialog=\"true\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://www.cubic.dev/buttons/review-in-cubic-dark.svg\"\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://www.cubic.dev/buttons/review-in-cubic-light.svg\"\u003e\u003cimg alt=\"View guided diff\" src=\"https://www.cubic.dev/buttons/review-in-cubic-light.svg\"\u003e\u003c/picture\u003e\u003c/a\u003e \u003ca href=\"https://www.cubic.dev/action/auto-fix/pr/PhucNguyen-Dev/back-end-skills/7?returnTo=https%3A%2F%2Fgithub.com%2FPhucNguyen-Dev%2Fback-end-skills%2Fpull%2F7\u0026source=description\" target=\"_blank\" rel=\"noopener noreferrer\" data-no-image-dialog=\"true\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://www.cubic.dev/buttons/turn-on-auto-fix-dark.svg\"\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg\"\u003e\u003cimg alt=\"Turn on auto-fix\" src=\"https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg\"\u003e\u003c/picture\u003e\u003c/a\u003e\n\n\u003c!-- End of auto-generated description by cubic. --\u003e\n\n","html_url":"https://github.com/PhucNguyen-Dev/back-end-skills/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhucNguyen-Dev%2Fback-end-skills/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"0.141.1","new_version":"0.143.3","update_type":"minor","path":null,"pr_created_at":"2026-10-20T09:08:58.000Z","version_change":"0.141.1 → 0.143.3","issue":{"uuid":"5939046427","node_id":"PR_kwDOT1iSxs8AAAABJhA3xg","number":11,"state":"open","title":"build(deps): bump fastapi from 0.141.1 to 0.143.3","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-20T09:08:58.000Z","updated_at":"2026-10-20T09:09:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"fastapi","old_version":"0.141.1","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.141.1 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\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.3\"\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=fastapi\u0026package-manager=pip\u0026previous-version=0.141.1\u0026new-version=0.143.3)](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/Cougar/OmaTasku/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cougar%2FOmaTasku/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"0.143.0","new_version":"0.143.3","update_type":"patch","path":"/service","pr_created_at":"2026-10-20T00:44:26.000Z","version_change":"0.143.0 → 0.143.3","issue":{"uuid":"5933913356","node_id":"PR_kwDOSy85b88AAAABJdAhYA","number":127,"state":"closed","title":"Bump the pip-minor-patch group in /service with 7 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-22T00:06:05.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-20T00:44:26.000Z","updated_at":"2026-10-22T00:06:33.000Z","time_to_close":170499,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-minor-patch","update_count":7,"packages":[{"name":"fastapi","old_version":"0.143.0","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.5","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pydantic-settings","old_version":"2.15.0","new_version":"2.16.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"google-genai","old_version":"2.30.1","new_version":"2.31.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"anthropic","old_version":"1.13.0","new_version":"1.15.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"pypdf","old_version":"6.20.1","new_version":"6.21.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"pypdfium2","old_version":"5.13.0","new_version":"5.14.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"}],"path":"/service","ecosystem":"pip"},"body":"Bumps the pip-minor-patch group in /service with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.143.0` | `0.143.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.54` | `2.1.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.15.0` | `2.16.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.30.1` | `2.31.0` |\n| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `1.13.0` | `1.15.0` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.20.1` | `6.21.0` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.13.0` | `5.14.0` |\n\nUpdates `fastapi` from 0.143.0 to 0.143.3\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/fastapi/fastapi/commit/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.143.0...0.143.3\"\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.54 to 2.1.5\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.5\u003c/h1\u003e\n\u003cp\u003eReleased: October 16, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [feature]\u003c/strong\u003e Added the \u003ccode\u003e_orm.Unmapped\u003c/code\u003e annotation and the\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct, providing a declarative-compatible\napproach to having \u0026quot;excluded\u0026quot; columns in a Declarative model, that is,\ncolumns that are part of the \u003ccode\u003e_schema.Table\u003c/code\u003e but are not mapped,\nreplacing the use of \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e for this\npurpose when using a Declarative mapping.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\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/11917\"\u003e#11917\u003c/a\u003e in version 2.0.36 where an ORM\nenabled \u003ccode\u003e_sql.update()\u003c/code\u003e using WHERE criteria which matched more than\none object present in the \u003ccode\u003e_orm.Session\u003c/code\u003e would expire server-side\nonupdate columns, as well as columns that were SET to a SQL expression, on\nonly one of the matched objects, leaving the remaining objects with stale\nvalues for those attributes. The columns are now expired for all matched\nobjects.\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/13675\"\u003e#13675\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [deprecated]\u003c/strong\u003e Using the \u003ccode\u003e_orm.Mapper.exclude_properties\u003c/code\u003e or\n\u003ccode\u003e_orm.Mapper.include_properties\u003c/code\u003e parameters on a Declarative\nmapping to exclude attributes that are declared on the class, such as with\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, is deprecated and now emits a deprecation\nwarning.  This use was never supported, and depending on the arguments\npassed to \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e, the attribute could remain mapped\nregardless; in particular, as of 2.1 this includes ORM mapped dataclasses\nwhere \u003ccode\u003e_orm.mapped_column.default\u003c/code\u003e is present.  The new\n\u003ccode\u003e_orm.unmapped_column()\u003c/code\u003e construct should be used instead.  Excluding\ncolumns that are present only in the \u003ccode\u003e_schema.Table\u003c/code\u003e, such as those\nfrom \u003ccode\u003e__table__\u003c/code\u003e, \u003ccode\u003e__table_args__\u003c/code\u003e or table reflection, is not\naffected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13650\"\u003e#13650\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eschema\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[schema] [bug]\u003c/strong\u003e Fixed issue where dialect-specific keyword arguments established on a\n\u003ccode\u003eForeignKeyConstraint\u003c/code\u003e, \u003ccode\u003eForeignKey\u003c/code\u003e or\n\u003ccode\u003eCheckConstraint\u003c/code\u003e, such as \u003ccode\u003epostgresql_not_valid\u003c/code\u003e, were not\ncarried along to the copy of the constraint produced by\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 `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 `google-genai` from 2.30.1 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\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/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\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/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\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/python-genai/compare/v2.30.1...v2.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 1.13.0 to 1.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add between_tools to thinking types in model capabilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add the speed parameter and usage.speed to Messages\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e return a Console organization's usage-tier spend cap as a read-only spend limit\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e speed up breaking change detection\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e describe headers on Managed Agents and telemetry endpoints\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify the script that formats code blocks in docs\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e cover OpenTelemetry options and method default timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e note that some models need a beta header to use speed\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.14.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add execution_identity to Managed Agents agents\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add organization_type_not_supported error to spend limit lists\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destination test endpoint\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destinations to the Admin API\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add native support for OpenTelemetry tracing\u003c/p\u003e\n\u003cp\u003eIf your app registers a global tracer provider, the SDK will create spans with it after upgrading, and they'll be exported with the rest of your traces. Requests will also get trace context headers from the global propagator. To disable, pass \u003ccode\u003eopen_telemetry=False\u003c/code\u003e to the client or set \u003ccode\u003eANTHROPIC_OPEN_TELEMETRY=false\u003c/code\u003e. Learn more in the \u003ca href=\"https://platform.claude.com/docs/en/manage-claude/opentelemetry/sdk\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e rename telemetry destination test response model\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e close dropped streams without waiting for the collector\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e pass unknown event types through the message stream helpers\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e stop raising \u0026quot;Unexpected event order\u0026quot; for an event before message_start\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e correct prefill, thinking, fallback and model descriptions\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e document the scope required to assign the managed role\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update model examples\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e narrow the tripwire test rule in the contributor guides\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.14.0...v1.15.0\"\u003e1.15.0\u003c/a\u003e (2026-10-15)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add between_tools to thinking types in model capabilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add the speed parameter and usage.speed to Messages\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e return a Console organization's usage-tier spend cap as a read-only spend limit\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e speed up breaking change detection\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e describe headers on Managed Agents and telemetry endpoints\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e simplify the script that formats code blocks in docs\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e cover OpenTelemetry options and method default timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e note that some models need a beta header to use speed\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.13.0...v1.14.0\"\u003e1.14.0\u003c/a\u003e (2026-10-14)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add execution_identity to Managed Agents agents\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add organization_type_not_supported error to spend limit lists\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destination test endpoint\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add telemetry destinations to the Admin API\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add native support for OpenTelemetry tracing\u003c/p\u003e\n\u003cp\u003eIf your app registers a global tracer provider, the SDK will create spans with it after upgrading, and they'll be exported with the rest of your traces. Requests will also get trace context headers from the global propagator. To disable, pass \u003ccode\u003eopen_telemetry=False\u003c/code\u003e to the client or set \u003ccode\u003eANTHROPIC_OPEN_TELEMETRY=false\u003c/code\u003e. Learn more in the \u003ca href=\"https://platform.claude.com/docs/en/manage-claude/opentelemetry/sdk\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e rename telemetry destination test response model\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e close dropped streams without waiting for the collector\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e pass unknown event types through the message stream helpers\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e stop raising \u0026quot;Unexpected event order\u0026quot; for an event before message_start\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e correct prefill, thinking, fallback and model descriptions\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e document the scope required to assign the managed role\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update model examples\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e narrow the tripwire test rule in the contributor guides\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/anthropics/anthropic-sdk-python/commit/bcd55fe1d3f0f1240765f8cef04295b67337f55a\"\u003e\u003ccode\u003ebcd55fe\u003c/code\u003e\u003c/a\u003e release: 1.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/69743442287cc974aa9ff94d982f2c313f88edd2\"\u003e\u003ccode\u003e6974344\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1021\"\u003e#1021\u003c/a\u003e from anthropics/synced/published\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/80404f64daa02dac4f75bf658c490dcae86f3910\"\u003e\u003ccode\u003e80404f6\u003c/code\u003e\u003c/a\u003e chore(tests): cover OpenTelemetry options and method default timeouts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ef9133691b1eb0c0dc82c91398300e1a7b602674\"\u003e\u003ccode\u003eef91336\u003c/code\u003e\u003c/a\u003e feat(helpers): retry a rate-limited fast fallback at standard speed (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/9ace6c5c771031812b91b4f2e539aa1e72448769\"\u003e\u003ccode\u003e9ace6c5\u003c/code\u003e\u003c/a\u003e feat(api): add between_tools to thinking types in model capabilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d44d21886402b894a3698defeaa89ea1455a845d\"\u003e\u003ccode\u003ed44d218\u003c/code\u003e\u003c/a\u003e chore(docs): describe headers on Managed Agents and telemetry endpoints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/ef59b87af236955e0dc47e0a95eb74b092944089\"\u003e\u003ccode\u003eef59b87\u003c/code\u003e\u003c/a\u003e docs(api): note that some models need a beta header to use speed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/c10fe778731adce8f584ef888b4bba3a04913d62\"\u003e\u003ccode\u003ec10fe77\u003c/code\u003e\u003c/a\u003e docs(changelog): shorten the OpenTelemetry tracing note (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5b187415d6426bae8a76a76e46934418d85e3e71\"\u003e\u003ccode\u003e5b18741\u003c/code\u003e\u003c/a\u003e chore(internal): simplify the script that formats code blocks in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f0e30dcc1740e121bcd08dff3341bfbd0e4f9fb0\"\u003e\u003ccode\u003ef0e30dc\u003c/code\u003e\u003c/a\u003e feat(api): add the speed parameter and usage.speed to Messages\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.13.0...v1.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.20.1 to 6.21.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.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\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\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e) by \u003ca href=\"https://github.com/JackyHsu-X\"\u003e\u003ccode\u003e@​JackyHsu-X\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\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e) by \u003ca href=\"https://github.com/Zephyr761\"\u003e\u003ccode\u003e@​Zephyr761\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e) by \u003ca href=\"https://github.com/tigger0jk\"\u003e\u003ccode\u003e@​tigger0jk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e) by \u003ca href=\"https://github.com/usmanmateen\"\u003e\u003ccode\u003e@​usmanmateen\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.21.0, 2026-10-16\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead an indirect page box on a writer page (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003eFull Changelog\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/py-pdf/pypdf/commit/1145329e8c80e1f72fbbb4001460fb8553236aeb\"\u003e\u003ccode\u003e1145329\u003c/code\u003e\u003c/a\u003e REL: 6.21.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/5ef728f0e16d225c853e89f861ba0a67402fe3f2\"\u003e\u003ccode\u003e5ef728f\u003c/code\u003e\u003c/a\u003e SEC: Improve performance and limit field work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4219\"\u003e#4219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/18bd2981a74479483a0b9507602c58a63d6c9b12\"\u003e\u003ccode\u003e18bd298\u003c/code\u003e\u003c/a\u003e SEC: Limit stream parsing work (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4218\"\u003e#4218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9f861003511cc5d732d766bd4f6d3c864998e30b\"\u003e\u003ccode\u003e9f86100\u003c/code\u003e\u003c/a\u003e DEV: Ignore ruff rule ICN001 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4206\"\u003e#4206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/1d64c39ea5e7a02156a400961118e4605592fe14\"\u003e\u003ccode\u003e1d64c39\u003c/code\u003e\u003c/a\u003e ENH: Allow custom fit modes for named destinations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4181\"\u003e#4181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/14ea59650c139f91912cdac37ef3c690a2ebcfde\"\u003e\u003ccode\u003e14ea596\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/download-artifact from 8.0.1 to 8.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4204\"\u003e#4204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c7c6d2aa0948d6d60b3c3a6512d808b02762d1ea\"\u003e\u003ccode\u003ec7c6d2a\u003c/code\u003e\u003c/a\u003e DEV: Bump actions/upload-artifact from 7.0.1 to 7.0.2 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/f2f158a2b051818f4981b34ff15d1ca67b324611\"\u003e\u003ccode\u003ef2f158a\u003c/code\u003e\u003c/a\u003e BUG: Treat NUL as whitespace in ArrayObject (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4a296e43c59fde5efeafc2d057581155d9558268\"\u003e\u003ccode\u003e4a296e4\u003c/code\u003e\u003c/a\u003e BUG: Avoid overwriting unread objects in add_form_topname (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4190\"\u003e#4190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/b29ac76fcd890db1b2f1ba5f387241a776520b1b\"\u003e\u003ccode\u003eb29ac76\u003c/code\u003e\u003c/a\u003e MAINT: Reduce Ruff maximum configuration values (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4194\"\u003e#4194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.20.1...6.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.13.0 to 5.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/releases\"\u003epypdfium2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.14.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.14.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cp\u003e\u003cem\u003eRuntime\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePdfDocument.get_identifier()\u003c/code\u003e: Fix a blunder that caused one byte too much to be chopped off.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePdfDocument\u003c/code\u003e and \u003ccode\u003ePdfImage.load_jpeg()\u003c/code\u003e: With byte stream input, in the \u003ccode\u003e_buffer_reader\u003c/code\u003e callback, check that the number of bytes read into the buffer is no less than the buffer's size, otherwise indicate error.\n\u003ccode\u003e@Stjorn\u003c/code\u003e filed a security ticket that triggered this change; however we consider this more of a theoretical safety \u003cem\u003eenhancement\u003c/em\u003e and not actually a vulnerability, since under valid cirucmstances we do not envisage a situation where \u003ccode\u003ereadinto()\u003c/code\u003e would fall short on data. \u003ca href=\"https://vulnbrocards.com/brocards/vb002-no-exploit-from-heavens/\"\u003eNo exploit from the heavens.\u003c/a\u003e Updated documentation.\n(With older versions of pypdfium2, consider wrapping buffer input so that \u003ccode\u003ereadinto()\u003c/code\u003e raises an exception if it could not consume enough data to fill the buffer.)\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003ePdfBitmap\u003c/code\u003e, unconditionally call \u003ccode\u003eFPDFBitmap_Destroy()\u003c/code\u003e when the bitmap is closed/finalized, i.e. including bitmaps created from a native, pdfium-external buffer (the default). The API does not affect external buffers, but assumably should still be called to release the \u003ccode\u003eFPDF_BITMAP\u003c/code\u003e shell itself.\u003c/li\u003e\n\u003cli\u003eOn foreign bitmaps, \u003ccode\u003ePdfBitmap.close()\u003c/code\u003e now warns about being a potentially unsafe operation, since it frees the C-side buffer. Set \u003ccode\u003e.warn_on_close = False\u003c/code\u003e to silence the warning, if you have made sure your usage is safe.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eAutoCloseable\u003c/code\u003e, avoid assigning \u003ccode\u003eself\u003c/code\u003e to an instance attribute. This should result in improved GC behavior. Many thanks to James Barlow for pointing this out.\u003c/li\u003e\n\u003cli\u003eAdded bindings to some new PDFium APIs, along with CLI integration:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ePdfAttachment\u003c/code\u003e: \u003ccode\u003e.{get,set}_desc()\u003c/code\u003e to read/write attachment descriptions, and \u003ccode\u003e.get_subtype()\u003c/code\u003e to obtain the MIME type.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePdfBookmark.get_style()\u003c/code\u003e and \u003ccode\u003ePdfBookmarkStyle\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eBuilds\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild scripts \u0026amp; CI: Updated PDFium pin from \u003ccode\u003e7913\u003c/code\u003e to \u003ccode\u003e8076\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eUpdated \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.3\u003c/code\u003e to \u003ccode\u003e2540.0\u003c/code\u003e (the \u003ccode\u003e2501\u003c/code\u003e build passed unused by pypdfium2).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePyodide: Patch freetype load flags to avoid \u003ccode\u003eFT_Load_Glyph()\u003c/code\u003e somehow corrupting the heap. It seems that this addresses the previously encountered crashes/freezes; however, the exact cause remains elusive. Anyway, many thanks to Hood Chatham for this finding.\n\u003cul\u003e\n\u003cli\u003eDropped debug symbols. Enabled PyPI upload. Updated documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eSetup\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRefactored ctypesgen integration. It is now cloned into pypdfium2's source tree and bundled in sdists. This avoids having an external git URL in pyproject setup dependencies that defeats the idea of a hermetic (self-contained) package index. ctypesgen's own setup and versioning code has been removed, owing to the project's special status as setup-only dependency with a head-to-head development model that allows for a constantly evolving API. See the \u003ca href=\"https://github.com/pypdfium2-team/ctypesgen/blob/acf905804b2ae50d2b230308e1ca62875f4fe16c/README.md#installation\"\u003eupdated pypdfium2-ctypesgen \u003ccode\u003eREADME.md\u003c/code\u003e\u003c/a\u003e for integration instructions. This also made Python 3.6 compatibility straightforward to restore after all, aligning to a common baseline with pypdfium2 and gn-dist.\u003c/li\u003e\n\u003cli\u003eDropped module splitting (\u003ccode\u003ePYPDFIUM_MODULES={raw,helpers}\u003c/code\u003e) and the \u003ccode\u003esystem-generate\u003c/code\u003e target, which had been introduced for pypdfium2's own conda packaging (see below).\u003c!-- raw HTML omitted --\u003e\nWe recognize that module splitting may still be desirable in some downstream packaging contexts; however, the dynamic implementation had been standing in the way of a proper \u003ccode\u003epyproject.toml\u003c/code\u003e migration, since the \u003ccode\u003e[project]\u003c/code\u003e table does not allow for \u003ccode\u003ename\u003c/code\u003e to be specified dynamically. This means we could not retain a first-party dynamic setting much longer without impairing the project's progress. Instead we suggest that you simply patch the project name / module include rules (possibly via some kind of automation) if module splitting is needed. This change does not affect the module layout in \u003ccode\u003esrc/\u003c/code\u003e which upholds the logical separation.\u003c/li\u003e\n\u003cli\u003eLowered iOS min version from \u003ccode\u003e26_0\u003c/code\u003e to \u003ccode\u003e17_0\u003c/code\u003e thanks to an upstream contribution. (We have not released any iOS wheels yet, but it is handled in setup.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eConda\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eRemoved pypdfium2's own conda packaging (\u003ccode\u003epypdfium2-team\u003c/code\u003e channel), following \u003ca href=\"https://github.com/mindee/doctr/discussions/2127\"\u003ethorough\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mindee/doctr/issues/113#issuecomment-5340008535\"\u003econsideration\u003c/a\u003e.\nUpstream \u003ccode\u003epdfium-binaries\u003c/code\u003e (\u003ccode\u003ebblanchon\u003c/code\u003e channel) followed suit and removed conda packaging as well, since pypdfium2 was the only known dependent.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eKey reasons include that it ended up covering far less platforms than we do with PyPI wheels, did not integrate with our own build strategies, and seemed fraught with workarounds.\nIn part, this has been a result of outsourcing the pdfium dependency (which seemed about the only viable option prior to \u003ca href=\"https://github.com/conda/ceps/blob/main/cep-0020.md\"\u003eCEP 20\u003c/a\u003e), along with other limitations, like conda generally supporting less platforms, and tight storage limits at \u003ccode\u003eanaconda.org\u003c/code\u003e that leave maintainers with tradeoffs between release frequency and platform inclusion vs. sustainability.\nThere is no fallback setup, either, which even seems to be an intentional limitation of conda's.\u003c/li\u003e\n\u003cli\u003eTo add to that, builds in a custom channel are inaccessible to dependents within the main anaconda/conda-forge ecosystems themselves, and generally a pain to manage, which resulted in negligible demand compared to PyPI. In short, the problems are manifold and technical debt is not far off.\u003c/li\u003e\n\u003cli\u003eThis means conda is effectively a third-party package environment similar to nixpkgs or Linux distribution packaging, unlike PyPI, which is a first-party package index where upstream authors publish directly. Conda build tools did not feel like being conceived for in-project packaging, either (the contrast to PyPA build backends is quite stark).\nOverall, there has been an unjustifably high complexity and amount of workarounds in relation to the low or nonexistent benefit.\u003c/li\u003e\n\u003cli\u003eTo be clear, any builds of pypdfium2 in conda-forge or anaconda/main are \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2#unofficial-packages\"\u003eunofficial (third-party)\u003c/a\u003e. We generally do not recommend using third-party distributions of pypdfium2, and their varying maintainership is a potential concern as well. Anyway, we cannot support what we don't maintain.\u003c/li\u003e\n\u003cli\u003eInstead, we want to highlight that you can just install pypdfium2 from PyPI even in a conda env. There are no mandatory runtime dependencies, so the usual reasons against mixing in PyPI packages do not apply.\u003c/li\u003e\n\u003cli\u003e\u003cem\u003eMaintainer's note: If upstream ever (drastically) improve integration with custom channels to allow for meaningful first-party publishing, the door remains ajar to redo pypdfium2's conda packaging the CEP 20 way.\u003c/em\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBuild info\u003c/h3\u003e\n\u003cp\u003eThis release was made with the following build strategies:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePBIN: \u003ccode\u003e[macosx_arm64, macosx_x86_64, win_amd64, win_arm64, win32, manylinux_x86_64, manylinux_i686, manylinux_aarch64, manylinux_armv7l, manylinux_ppc64le, manylinux_mips64le, manylinux_mipsle, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCIBW: \u003ccode\u003e[manylinux_riscv64, manylinux_loongarch64, manylinux_s390x, musllinux_x86_64, musllinux_aarch64, musllinux_armv7l, musllinux_i686, musllinux_ppc64le, musllinux_s390x, musllinux_riscv64, musllinux_loongarch64, pyodide_wasm32]\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/pypdfium2-team/pypdfium2/commit/21f85e273036f3bade4f67d896e1d05927e5f4b1\"\u003e\u003ccode\u003e21f85e2\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/1a9a921f26e2bf4c10754f3efb5172d6a77d43c1\"\u003e\u003ccode\u003e1a9a921\u003c/code\u003e\u003c/a\u003e Code style: change some \u003ccode\u003evar == 0\u003c/code\u003e checks to \u003ccode\u003enot var\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/46be6578997119ca06ec6b3e07cda2a0aba57e8e\"\u003e\u003ccode\u003e46be657\u003c/code\u003e\u003c/a\u003e PdfImage.extract(): improve implementation's code style\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b2d146c20337339a440d8668a5c7056e3b48e1dc\"\u003e\u003ccode\u003eb2d146c\u003c/code\u003e\u003c/a\u003e PdfDocument.get_identifier() fix: avoid chopping off a byte too much\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/e856c86af6363f9326f8b7ab07a808ff6b68d7cc\"\u003e\u003ccode\u003ee856c86\u003c/code\u003e\u003c/a\u003e Add an errcheck to \u003ccode\u003ePdfAttachment.get_name()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/080d459a4536540fa65b13431dac3f1fa81001b6\"\u003e\u003ccode\u003e080d459\u003c/code\u003e\u003c/a\u003e sbuild: fix macOS wheel tag (version)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3859503f346f3498aa0fe27c1fe8ef5883817e50\"\u003e\u003ccode\u003e3859503\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.14.0b1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/35304ab21576f896bef78738ad856ff7d9b037a2\"\u003e\u003ccode\u003e35304ab\u003c/code\u003e\u003c/a\u003e Prepare for a beta release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/f9859d3dc5b4ef1db28314dfb24737fb9b3eb58a\"\u003e\u003ccode\u003ef9859d3\u003c/code\u003e\u003c/a\u003e cli/toc: drop now-unnecessary pdfium version check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/d7ab55ea770a02ba3eeae066f10c32fc5865a262\"\u003e\u003ccode\u003ed7ab55e\u003c/code\u003e\u003c/a\u003e Fix weird changelog wording\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.13.0...5.14.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 \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/Syracuse3DPrintingOrg/PantryRaider/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Syracuse3DPrintingOrg%2FPantryRaider/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"}},{"old_version":"0.136.3","new_version":"0.143.3","update_type":"minor","path":null,"pr_created_at":"2026-10-19T13:17:41.000Z","version_change":"0.136.3 → 0.143.3","issue":{"uuid":"5924599981","node_id":"PR_kwDOSlKuJc8AAAABJVkLHQ","number":232,"state":"open","title":"chore(deps): bump fastapi from 0.136.3 to 0.143.3","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-19T13:17:41.000Z","updated_at":"2026-10-21T04:14:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.143.3","repository_url":"https://github.com/fastapi/fastapi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.136.3 to 0.143.3.\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.3\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix non-finite float serialization in JSONL and SSE streams. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16509\"\u003e#16509\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🎨 Update Python format in Markdown with Ruff. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16505\"\u003e#16505\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.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix blocking frontend fallback file checks. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16503\"\u003e#16503\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 zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16500\"\u003e#16500\u003c/a\u003e by \u003ca href=\"https://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/16499\"\u003e#16499\u003c/a\u003e by \u003ca href=\"https://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/16501\"\u003e#16501\u003c/a\u003e by \u003ca href=\"https://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 (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16498\"\u003e#16498\u003c/a\u003e by \u003ca href=\"https://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/16497\"\u003e#16497\u003c/a\u003e by \u003ca href=\"https://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/16495\"\u003e#16495\u003c/a\u003e by \u003ca href=\"https://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/16496\"\u003e#16496\u003c/a\u003e by \u003ca href=\"https://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/16493\"\u003e#16493\u003c/a\u003e by \u003ca href=\"https://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/16494\"\u003e#16494\u003c/a\u003e by \u003ca href=\"https://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/16490\"\u003e#16490\u003c/a\u003e by \u003ca href=\"https://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/16491\"\u003e#16491\u003c/a\u003e by \u003ca href=\"https://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/16492\"\u003e#16492\u003c/a\u003e by \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⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16487\"\u003e#16487\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 werkzeug from 3.1.6 to 3.1.9. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16464\"\u003e#16464\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.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\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/bb7f314287bf36e04539c572a2256d94ea45f0d6\"\u003e\u003ccode\u003ebb7f314\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.3 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16510\"\u003e#16510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c34a14c659b52ee4dd4ff592d16221b0ceaebb76\"\u003e\u003ccode\u003ec34a14c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d1fd422fd9c3b24b0e2bcf1cc89f1e7249b5fcd6\"\u003e\u003ccode\u003ed1fd422\u003c/code\u003e\u003c/a\u003e 🐛 Fix non-finite float serialization in JSONL and SSE streams (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16509\"\u003e#16509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b919816378eaa773df7ce4204414c712c9fdbea\"\u003e\u003ccode\u003e0b91981\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/64efa4fe956c8e278960213c120d26255d852193\"\u003e\u003ccode\u003e64efa4f\u003c/code\u003e\u003c/a\u003e 🎨 Update Python format in Markdown with Ruff (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16505\"\u003e#16505\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ba24dc3bc011bad3efdbd68b9d529faae2c2993c\"\u003e\u003ccode\u003eba24dc3\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.143.2 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16504\"\u003e#16504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/98050eeaf006cf26e9a8b7f83d26fe00d74091ba\"\u003e\u003ccode\u003e98050ee\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d0282a388b3875dfdfd69813693608676006254f\"\u003e\u003ccode\u003ed0282a3\u003c/code\u003e\u003c/a\u003e 🐛 Fix blocking frontend fallback file checks (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16503\"\u003e#16503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/db04f5b7ed05e3408be73d2c62ae04653be3b3fb\"\u003e\u003ccode\u003edb04f5b\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/fd0614cac4c5eb57e08ba82c63be0824453dafe2\"\u003e\u003ccode\u003efd0614c\u003c/code\u003e\u003c/a\u003e 🌐 Update translations for zh-hant (update-outdated) (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16500\"\u003e#16500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.3...0.143.3\"\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/mostlycopypaste/stoa/pull/232","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mostlycopypaste%2Fstoa/issues/232","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/232/packages"}}]}