{"id":5054,"name":"websocket-client","ecosystem":"pip","repository_url":"https://github.com/websocket-client/websocket-client","issues_count":104,"created_at":"2025-06-06T17:08:27.507Z","updated_at":"2025-06-06T17:08:27.507Z","purl":"pkg:pypi/websocket-client","metadata":{"id":2969092,"name":"websocket-client","ecosystem":"pypi","description":"WebSocket client for Python with low level API options","homepage":"https://github.com/websocket-client/websocket-client.git","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/websocket-client/websocket-client","keywords_array":["websockets","client"],"namespace":null,"versions_count":87,"first_release_published_at":"2011-01-04T04:59:48.000Z","latest_release_published_at":"2024-04-23T22:16:14.000Z","latest_release_number":"1.8.0","last_synced_at":"2025-06-06T05:30:38.319Z","created_at":"2022-04-10T13:03:41.050Z","updated_at":"2025-06-06T05:30:38.319Z","registry_url":"https://pypi.org/project/websocket-client/","install_command":"pip install websocket-client --index-url https://pypi.org/simple","documentation_url":"https://websocket-client.readthedocs.io/","metadata":{"funding":null,"documentation":"https://websocket-client.readthedocs.io/","classifiers":["Development Status :: 4 - Beta","Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Topic :: Internet","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"websocket-client"},"repo_metadata":{"uuid":"1202362","full_name":"websocket-client/websocket-client","owner":"websocket-client","description":"WebSocket client for Python","archived":false,"fork":false,"pushed_at":"2023-12-15T05:56:13.000Z","size":1361,"stargazers_count":3380,"open_issues_count":14,"forks_count":806,"subscribers_count":86,"default_branch":"master","last_synced_at":"2024-01-06T13:57:52.096Z","etag":null,"topics":["python","rfc-6455","websocket","websocket-client","websockets","websockets-client"],"latest_commit_sha":null,"homepage":"https://github.com/websocket-client/websocket-client","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/websocket-client.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2010-12-28T06:35:25.000Z","updated_at":"2024-01-06T13:57:52.097Z","dependencies_parsed_at":"2023-12-15T05:31:22.893Z","dependency_job_id":"cbe46b9a-c2a5-43f1-b90c-5c2d29f7921e","html_url":"https://github.com/websocket-client/websocket-client","commit_stats":{"total_commits":952,"total_committers":212,"mean_commits":4.490566037735849,"dds":0.6113445378151261,"last_synced_commit":"0fa5669fbd1d57a4bb1da580b3879f68d15a6d57"},"previous_names":["liris/websocket-client"],"tags_count":84,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/websocket-client","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":179484947,"owners_count":10822669,"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":"websocket-client","name":"websocket-client","uuid":"24536015","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/24536015?v=4","repositories_count":1,"last_synced_at":"2023-04-09T09:48:08.912Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/websocket-client","created_at":"2022-11-02T16:23:23.967Z","updated_at":"2023-04-09T09:48:08.925Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/websocket-client","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/websocket-client/repositories"},"tags":[{"name":"v1.7.0","sha":"85de6c7e14058ca37224303d5468a560413a6205","kind":"commit","published_at":"2023-12-03T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.7.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.7.0/manifests"},{"name":"v1.6.4","sha":"39a6876001d1170f0e1fc2754860a4697fe9b506","kind":"commit","published_at":"2023-10-08T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.4","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.4/manifests"},{"name":"v1.6.3","sha":"69dd1fda588a69f196d6dc142b6ce96366f6904f","kind":"commit","published_at":"2023-09-11T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.3/manifests"},{"name":"v1.6.2","sha":"b42e8b345cfa20389f6ef823ee4be291b86920f6","kind":"commit","published_at":"2023-08-22T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.2/manifests"},{"name":"v1.6.1","sha":"d91583c73e0bcde6420003952bb234b4172b3427","kind":"commit","published_at":"2023-06-23T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.1/manifests"},{"name":"v1.6.0","sha":"1825345c4c06a15884d80a4146299363a5d87c7a","kind":"commit","published_at":"2023-06-17T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.6.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.6.0/manifests"},{"name":"v1.5.3","sha":"99f60d4e2b8ec858f6f051a905c6c17ecb872d3b","kind":"commit","published_at":"2023-06-09T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.3/manifests"},{"name":"v1.5.2","sha":"7c39ddb91d6ed07974f3435d96e0d57a40435e54","kind":"commit","published_at":"2023-05-21T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.2/manifests"},{"name":"v1.5.1","sha":"8409d5f3583ab5f1c0fc2bcf91cf9ed11b0d06bf","kind":"commit","published_at":"2023-02-05T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.1/manifests"},{"name":"v1.5.0","sha":"91b76c8b1b34d08b56bc7e27fffd8e194174b5ba","kind":"commit","published_at":"2023-01-26T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.5.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.5.0/manifests"},{"name":"v1.4.2","sha":"c8c5a19da2a2015a64d08479e74779de7fd355de","kind":"commit","published_at":"2022-11-03T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.4.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.2/manifests"},{"name":"v1.4.1","sha":"37429a3efa1238cb5b6e5c056dd4e9190575d5ca","kind":"commit","published_at":"2022-09-04T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.4.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.1/manifests"},{"name":"v1.4.0","sha":"14b102d809295328fcf9fa87b396eff05b2d039f","kind":"commit","published_at":"2022-08-24T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.4.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.4.0/manifests"},{"name":"v1.3.3","sha":"61171591b08ee031e02cc6cb129952259062f502","kind":"commit","published_at":"2022-06-20T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.3/manifests"},{"name":"v1.3.2","sha":"c2625f99789ad71f5295b86a1d2e2217ee2c5886","kind":"commit","published_at":"2022-03-29T00:00:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"db1f2cca25d9ca5c91ad678d04bada730a77ecdf","kind":"commit","published_at":"2022-02-25T20:55:07.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"500cc77327691486851ca9ff3f5ab0d6a227c9ba","kind":"commit","published_at":"2022-02-25T17:21:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.3.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.3.0/manifests"},{"name":"v1.2.3","sha":"0694848a93043b29e60c7653afb385839b1629b6","kind":"commit","published_at":"2021-12-07T16:30:22.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.3/manifests"},{"name":"v1.2.2","sha":"dff0ac116f28f7b9eab584752a29a6d480b8c94f","kind":"commit","published_at":"2021-12-07T02:58:06.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.2","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"b8fc65ed8dc892c322b6ea1f8e1e8d5406f11612","kind":"commit","published_at":"2021-08-13T03:59:16.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"36213279ff64588cf458168b01138f6a9cfba440","kind":"commit","published_at":"2021-08-11T01:36:10.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.2.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.2.0/manifests"},{"name":"v1.1.1","sha":"4249b500772583115fd30e3cd9a6cb85a1d3eb62","kind":"commit","published_at":"2021-08-06T01:27:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.1.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"11893bc746913f7bfeb85db62dfa6f0c2a1deb6e","kind":"commit","published_at":"2021-06-10T02:20:08.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.1.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"b3dba5f881dfc9df0f4a401765ba757a74b99892","kind":"commit","published_at":"2021-05-22T01:16:14.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.0.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"b5ec9e9728d549258d9b9183c1857489bdf5c07f","kind":"commit","published_at":"2021-05-18T01:59:26.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v1.0.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v1.0.0/manifests"},{"name":"v0.59.0","sha":"8f072582d4bc21bb19fb4adee55a305da12790c1","kind":"commit","published_at":"2021-05-05T01:33:13.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.59.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.59.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.59.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.59.0/manifests"},{"name":"v0.58.0","sha":"bf1b7675c842e2a7a8ea4167216d16b18fee7f56","kind":"commit","published_at":"2021-03-03T01:48:12.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.58.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.58.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.58.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.58.0/manifests"},{"name":"v0.57.0","sha":"29c15714ac9f5272e1adefc9c99b83420b409f63","kind":"commit","published_at":"2019-12-25T12:43:20.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.57.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.57.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.57.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.57.0/manifests"},{"name":"v0.56.0","sha":"3c25814664fef5b78716ed8841123ed1c0d17824","kind":"tag","published_at":"2019-03-21T01:24:19.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.56.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.56.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.56.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.56.0/manifests"},{"name":"v0.54.0","sha":"102033e44bcc9badf85c78769516d3f9127ebdc7","kind":"tag","published_at":"2018-11-01T04:31:44.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.54.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.54.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.54.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.54.0/manifests"},{"name":"v0.53.0","sha":"efcf31b30122e05701fb3f696b029baf8faa6d8e","kind":"commit","published_at":"2018-09-09T13:19:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.53.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.53.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.53.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.53.0/manifests"},{"name":"v0.52.0","sha":"601486746a29b9d5bfe15691084ff7d1e70b2ac9","kind":"commit","published_at":"2018-09-03T10:12:28.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.52.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.52.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.52.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.52.0/manifests"},{"name":"v0.51.0","sha":"ae589495b75162703ab4fe1f8712f50d22b12d4e","kind":"commit","published_at":"2018-08-19T11:02:13.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.51.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.51.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.51.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.51.0/manifests"},{"name":"v0.50.0","sha":"bb3ca55e79cdd5cceb6a931a2c92679b9fb87aa9","kind":"commit","published_at":"2018-08-18T05:49:09.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.50.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.50.0/manifests"},{"name":"v0.49.0","sha":"e4a012d8ad13e85b13e3ed60232ec09dbaf3ab8e","kind":"commit","published_at":"2018-08-14T06:50:10.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.49.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.49.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.49.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.49.0/manifests"},{"name":"v0.48.0","sha":"df275d351f9887fba2774e2e1aa79ff1e5a24bd1","kind":"commit","published_at":"2018-05-27T05:09:36.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.48.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.48.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.48.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.48.0/manifests"},{"name":"v0.47.0","sha":"87861f951d1a65ed5d9080f7aaaf44310f376c56","kind":"commit","published_at":"2018-02-16T00:43:14.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.47.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.47.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.47.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.47.0/manifests"},{"name":"v0.46.0","sha":"badde5916e5590e1075f13e190c36d0d28bdb81c","kind":"commit","published_at":"2017-12-30T11:27:44.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.46.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.46.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.46.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.46.0/manifests"},{"name":"v0.45.0","sha":"8f0274415fad055a02bb3ec0577001c0775904f9","kind":"commit","published_at":"2017-12-24T06:33:35.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.45.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.45.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.45.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.45.0/manifests"},{"name":"v0.44.0","sha":"9a9429a9111e275793021f91d1a1a1e6e72a1dd1","kind":"tag","published_at":"2017-06-23T11:58:10.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.44.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.44.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.44.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.44.0/manifests"},{"name":"v0.43.0","sha":"9a28437252c7c953e208ed07ff1811d1dc7b8c41","kind":"commit","published_at":"2017-06-21T11:44:42.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.43.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.43.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.43.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.43.0/manifests"},{"name":"v0.41.1","sha":"6ccdcb21d4767e31b43319e2d595cf0da4774d00","kind":"commit","published_at":"2017-06-18T09:05:25.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.41.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.41.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.1/manifests"},{"name":"v0.41.0","sha":"f992476b65d021c4f567c3781dd5475ba2374007","kind":"commit","published_at":"2017-06-18T07:43:34.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.41.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.41.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.41.0/manifests"},{"name":"v0.40.0","sha":"7d682da323f421241ed11dcf797d9baa15e2debe","kind":"commit","published_at":"2016-12-09T02:09:41.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.40.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.40.0/manifests"},{"name":"v0.39.0","sha":"bb62b656a2f5e7e425ffc60456412abff06c82d9","kind":"commit","published_at":"2016-12-02T00:58:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.39.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.39.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.39.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.39.0/manifests"},{"name":"v0.37.0","sha":"3ca245de52b0ffc914649110ce5a1fdb6abaeb45","kind":"tag","published_at":"2016-04-14T00:28:23.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.37.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.37.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.37.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.37.0/manifests"},{"name":"v0.36.0","sha":"fa97b1727fac15dcf092653403cbf0ab490a1fc6","kind":"tag","published_at":"2016-04-12T00:03:52.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.36.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.36.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.36.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.36.0/manifests"},{"name":"v0.34.0","sha":"4d5bc1e4e3622265ef7dc54281c0f73bb4dd98d6","kind":"tag","published_at":"2015-10-28T00:23:14.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.34.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.34.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.34.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.34.0/manifests"},{"name":"v0.33.0","sha":"f239e4965eb8b2cd61b3fd11355550fdc101b4e7","kind":"tag","published_at":"2015-10-28T00:20:44.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.33.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.33.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.33.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.33.0/manifests"},{"name":"v0.32.0","sha":"41bd2d4d96175ed5d80800cf3db48084ea901156","kind":"tag","published_at":"2015-06-03T00:45:39.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.32.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.32.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.32.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.32.0/manifests"},{"name":"v0.31.0","sha":"0868c9530089290972a4e0b69e65086d98526e01","kind":"tag","published_at":"2015-05-22T02:03:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.31.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.31.0/manifests"},{"name":"v0.30.0","sha":"5bfad93a7fc1d370b9058d2cbf35afc897dd68ee","kind":"commit","published_at":"2015-04-21T00:22:46.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.30.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.30.0/manifests"},{"name":"v0.29.0","sha":"55ef417645249a923df3dff89b3f0ede17715990","kind":"tag","published_at":"2015-04-01T03:20:08.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.29.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.29.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.29.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.29.0/manifests"},{"name":"v0.28.0","sha":"802bc13ee850f15ec55f1308f543f65fb267a473","kind":"tag","published_at":"2015-04-01T01:12:59.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.28.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.28.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.28.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.28.0/manifests"},{"name":"v0.27.0","sha":"bb5f395eb242250711336eaf2021f79e81a6459c","kind":"tag","published_at":"2015-03-31T22:49:29.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.27.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.27.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.27.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.27.0/manifests"},{"name":"v0.25.0","sha":"10bbe19c1a4c493fbfcce3f02f850a954310edf2","kind":"tag","published_at":"2015-02-23T04:35:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.25.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.25.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.25.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.25.0/manifests"},{"name":"v0.24.0","sha":"2d022281340e7a3044f96f50edee66023395b8f1","kind":"tag","published_at":"2015-02-22T23:52:38.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.24.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.24.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.24.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.24.0/manifests"},{"name":"v0.22.0","sha":"13f42877b881a2a032706e4533bbb4cc418b1fc6","kind":"tag","published_at":"2014-12-02T23:19:36.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.22.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.22.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.22.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.22.0/manifests"},{"name":"v0.21.0","sha":"dea565c92ed93834f222ba9faabdea932ba73837","kind":"tag","published_at":"2014-10-16T23:14:47.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.21.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.21.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.21.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.21.0/manifests"},{"name":"v0.20.0","sha":"322687e9874e9d7d9a5b7382b3c2ac4e8166edca","kind":"tag","published_at":"2014-10-10T02:36:33.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.20.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.20.0/manifests"},{"name":"v0.19.0","sha":"6cd876d7067d2c1e22fee3495cb369901356715c","kind":"tag","published_at":"2014-10-09T23:03:42.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.19.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.19.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.19.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.19.0/manifests"},{"name":"v0.18.0","sha":"dd32067a41bf4666a81d2e725fcd3146e570832c","kind":"commit","published_at":"2014-08-27T03:56:20.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.18.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.18.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.18.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.18.0/manifests"},{"name":"v0.17.0","sha":"0e7b000ff828b389d8aa29afa7cd34d26f0b3082","kind":"commit","published_at":"2014-08-22T05:43:57.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.17.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.17.0/manifests"},{"name":"v0.16.0a","sha":"1cc117110959225d8b629e41b49b8b580ae24a19","kind":"commit","published_at":"2014-07-17T05:57:28.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.16.0a","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.16.0a","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0a","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0a/manifests"},{"name":"v0.16.0","sha":"e47ba0b9df954a58937087c928ae26625ecc81ab","kind":"commit","published_at":"2014-07-16T01:10:12.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.16.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.16.0/manifests"},{"name":"v0.14.1","sha":"99c8cf45dd34a8c7974ed39efadd642b69c692ab","kind":"commit","published_at":"2014-05-19T22:56:04.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.14.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.1/manifests"},{"name":"v0.14.0","sha":"f6da33e6f292ef3e0ca21d9bbe8d7ab541d649a1","kind":"tag","published_at":"2014-05-15T00:37:22.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.14.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.14.0/manifests"},{"name":"v0.13.1-py3","sha":"fd95aabd706b93b3b8862a9ae0cc1cc3c656d04c","kind":"commit","published_at":"2014-04-25T03:29:37.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.13.1-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.13.1-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.1-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.1-py3/manifests"},{"name":"v0.13.0-py3","sha":"e197939d13361706a6773c64bdc451cf59e49189","kind":"commit","published_at":"2014-04-14T21:57:21.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.13.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.13.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0-py3/manifests"},{"name":"v0.13.0","sha":"6894bfc6a8d4350936f1b1bbe24c413b21765d7c","kind":"commit","published_at":"2014-04-13T07:18:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.13.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.13.0/manifests"},{"name":"v0.12.0-py3","sha":"22128ca285a36a64cecfc2338492d4f4bbb05155","kind":"tag","published_at":"2013-09-13T00:31:39.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.12.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.12.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0-py3/manifests"},{"name":"v0.12.0","sha":"9cd13676b090b02b7b0aedcbaeecbab20cf4fcb4","kind":"tag","published_at":"2013-09-13T00:31:00.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.12.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.12.0/manifests"},{"name":"v0.11.0","sha":"23297a7b2a97494355fc46e43f07707209265acd","kind":"tag","published_at":"2013-05-23T06:03:20.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.11.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0/manifests"},{"name":"v0.11.0-py3","sha":"99e46b451197963d6369f987469053b7c03ffda1","kind":"tag","published_at":"2013-05-23T06:02:53.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.11.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.11.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.11.0-py3/manifests"},{"name":"v0.10.0-py3","sha":"db76596a2f393d3f1ee9fdc7313a5cbfefa0ca5a","kind":"tag","published_at":"2013-03-22T05:28:58.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.10.0-py3","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.10.0-py3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0-py3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0-py3/manifests"},{"name":"v0.10.0","sha":"7573c84a52f14aff26eb25df6af9da677fa77703","kind":"tag","published_at":"2013-03-22T05:16:36.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.10.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"4e0cf4bf36f71bf2242f2ba22fe3c4ee8630efcd","kind":"tag","published_at":"2013-02-18T07:18:12.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.9.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.9.0/manifests"},{"name":"v0.8.0","sha":"c2937e2f02e8ba8d70799f2d77558a33986072a3","kind":"tag","published_at":"2012-09-14T01:51:43.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.8.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.8.0/manifests"},{"name":"v0.7.0","sha":"b4695737d2a8a8ba13074bd2fce75ef814674e26","kind":"tag","published_at":"2012-04-03T02:19:30.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.7.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"23b12bb7aa178866cb5e94bf38b8fb635e7f11ff","kind":"tag","published_at":"2012-03-02T06:09:16.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.6.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"33401d6e4d77f605fabd51b838a3fd0eccdae687","kind":"tag","published_at":"2012-01-18T00:58:42.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.5.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.5.0/manifests"},{"name":"v0.4.1","sha":"673470f799aadf1991aa9282e325b973077bae87","kind":"commit","published_at":"2011-02-28T08:43:52.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.4.1","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"92ebf3cfcd9dce7160686692d3496d537b577286","kind":"commit","published_at":"2011-01-06T09:36:39.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.4.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"a1538ab23f1717c1b1c58caf23539d74e82a5316","kind":"commit","published_at":"2011-01-04T03:54:47.000Z","download_url":"https://codeload.github.com/websocket-client/websocket-client/tar.gz/v0.3.0","html_url":"https://github.com/websocket-client/websocket-client/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websocket-client%2Fwebsocket-client/tags/v0.3.0/manifests"}]},"repo_metadata_updated_at":"2024-01-06T13:59:30.843Z","dependent_packages_count":982,"downloads":114369665,"downloads_period":"last-month","dependent_repos_count":36116,"rankings":{"downloads":0.01815824081495652,"dependent_repos_count":0.035766231908247695,"dependent_packages_count":0.02696223636160211,"stargazers_count":1.8257285764856284,"forks_count":1.9216554446292875,"docker_downloads_count":0.004952247494988142,"average":0.6388704962824517},"purl":"pkg:pypi/websocket-client","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/websocket-client","docker_dependents_count":7481,"docker_downloads_count":5596517205,"usage_url":"https://repos.ecosyste.ms/usage/pypi/websocket-client","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/websocket-client/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/websocket-client/related_packages","maintainers":[{"uuid":"ukwksk","login":"ukwksk","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/ukwksk/","role":null,"created_at":"2022-12-07T16:17:21.402Z","updated_at":"2022-12-07T16:17:21.402Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ukwksk/packages"},{"uuid":"engin33r","login":"engin33r","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/engin33r/","role":null,"created_at":"2022-12-07T16:17:21.388Z","updated_at":"2022-12-07T16:17:21.388Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/engin33r/packages"},{"uuid":"liris","login":"liris","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/liris/","role":null,"created_at":"2022-12-07T16:17:21.395Z","updated_at":"2022-12-07T16:17:21.395Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/liris/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690329,"maintainers_count":292761,"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":72,"unique_repositories_count_past_30_days":16,"recent_issues":[{"uuid":"5536027477","node_id":"PR_kwDONC03Hc8AAAABEiBuuw","number":4260,"state":"open","title":"build(deps): bump the python group with 85 updates","user":"dependabot[bot]","labels":["backport:skip","dependencies","python:uv","first-time-contributor"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-22T06:23:30.000Z","updated_at":"2026-09-22T06:33:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":85,"packages":[{"name":"pin-pink","old_version":"4.3.0","new_version":"4.4.0","repository_url":"https://github.com/stephane-caron/pink"},{"name":"reactivex","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/ReactiveX/RxPY"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"packaging","old_version":"25.0","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"filelock","old_version":"3.23.0","new_version":"3.32.6","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"plum-dispatch","old_version":"2.5.7","new_version":"2.10.1","repository_url":"https://github.com/beartype/plum"},{"name":"gitpython","old_version":"3.1.52","new_version":"3.1.62","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"structlog","old_version":"25.5.0","new_version":"26.1.0","repository_url":"https://github.com/hynek/structlog"},{"name":"opencv-contrib-python","old_version":"4.13.0.92","new_version":"5.0.0.93","repository_url":"https://github.com/opencv/opencv-python"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"textual","old_version":"3.7.1","new_version":"8.2.8","repository_url":"https://github.com/Textualize/textual"},{"name":"terminaltexteffects","old_version":"0.12.2","new_version":"0.15.0","repository_url":"https://github.com/ChrisBuilds/terminaltexteffects"},{"name":"typer","old_version":"0.23.1","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"ipython","old_version":"8.38.0","new_version":"8.39.0","repository_url":"https://github.com/ipython/ipython"},{"name":"plotext","old_version":"5.3.2","new_version":"6.1.0","repository_url":"https://github.com/piccolomo/plotext"},{"name":"numba","old_version":"0.63.1","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"llvmlite","old_version":"0.46.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"rerun-sdk","old_version":"0.32.0","new_version":"0.37.2","repository_url":"https://github.com/rerun-io/rerun"},{"name":"protobuf","old_version":"6.33.5","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"cryptography","old_version":"46.0.5","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"ipykernel","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"open-clip-torch","old_version":"3.2.0","new_version":"3.3.0","repository_url":"https://github.com/mlfoundations/open_clip"},{"name":"gdown","old_version":"6.0.0","new_version":"6.2.0","repository_url":"https://github.com/wkentaro/gdown"},{"name":"tensorboard","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/tensorflow/tensorboard"},{"name":"portal","old_version":"3.7.4","new_version":"3.8.1","repository_url":"https://github.com/danijar/portal"},{"name":"bosdyn-client","old_version":"5.1.4","new_version":"5.2.0","repository_url":"https://github.com/boston-dynamics/spot-sdk"},{"name":"bosdyn-api","old_version":"5.1.4","new_version":"5.2.0","repository_url":"https://github.com/boston-dynamics/spot-sdk"},{"name":"bosdyn-core","old_version":"5.1.4","new_version":"5.2.0","repository_url":"https://github.com/boston-dynamics/spot-sdk"},{"name":"pyarrow","old_version":"23.0.0","new_version":"25.0.1","repository_url":"https://github.com/apache/arrow"},{"name":"langchain-core","old_version":"1.3.3","new_version":"1.6.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.6","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-huggingface","old_version":"1.2.0","new_version":"1.2.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-ollama","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"ollama","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/ollama/ollama-python"},{"name":"openai","old_version":"2.21.0","new_version":"3.14.0","repository_url":"https://github.com/openai/openai-python"},{"name":"sounddevice","old_version":"0.5.5","new_version":"0.5.6","repository_url":"https://github.com/spatialaudio/python-sounddevice"},{"name":"fastapi","old_version":"0.129.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"python-socketio","old_version":"5.16.1","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sse-starlette","old_version":"3.2.0","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.53.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"soundfile","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"timm","old_version":"1.0.24","new_version":"1.0.29","repository_url":"https://github.com/huggingface/pytorch-image-models"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"lap","old_version":"0.5.12","new_version":"0.5.13","repository_url":"https://github.com/gatagat/lap"},{"name":"transformers","old_version":"4.53.3","new_version":"5.17.0"},{"name":"moondream","old_version":"0.2.0","new_version":"2.3.0","repository_url":"https://github.com/vikhyat/moondream"},{"name":"omegaconf","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/omry/omegaconf"},{"name":"hydra-core","old_version":"1.3.2","new_version":"1.3.7","repository_url":"https://github.com/facebookresearch/hydra"},{"name":"unitree-webrtc-connect","old_version":"2.1.2","new_version":"2.2.0","repository_url":"https://github.com/legion1581/unitree_webrtc_connect"},{"name":"cyclonedds","old_version":"0.10.5","new_version":"11.0.1","repository_url":"https://github.com/eclipse-cyclonedds/cyclonedds-python"},{"name":"mcap","old_version":"1.3.1","new_version":"1.4.0","repository_url":"https://github.com/foxglove/mcap"},{"name":"piper-sdk","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/agilexrobotics/piper_sdk"},{"name":"xarm-python-sdk","old_version":"1.17.3","new_version":"1.18.4","repository_url":"https://github.com/xArm-Developer/xArm-Python-SDK"},{"name":"roboplan","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/open-planning/roboplan"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"cupy-cuda12x","old_version":"13.6.0","new_version":"14.2.0","repository_url":"https://github.com/cupy/cupy"},{"name":"mujoco","old_version":"3.10.0","new_version":"3.13.0","repository_url":"https://github.com/google-deepmind/mujoco"},{"name":"gtsam-extended","old_version":"4.3a1.post1","new_version":"4.3a2.post202608240418"},{"name":"aiortc","old_version":"1.14.0","new_version":"1.15.0","repository_url":"https://github.com/aiortc/aiortc"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"reportlab","old_version":"4.5.0","new_version":"5.0.1"},{"name":"manifold3d","old_version":"3.5.1","new_version":"3.5.3","repository_url":"https://github.com/elalish/manifold"},{"name":"coacd","old_version":"1.0.11","new_version":"1.0.14","repository_url":"https://github.com/SarahWeiii/CoACD"},{"name":"usd-core","old_version":"26.5","new_version":"26.8","repository_url":"https://github.com/PixarAnimationStudios/OpenUSD"},{"name":"ruff","old_version":"0.14.3","new_version":"0.16.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"8.3.5","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.15.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-env","old_version":"1.1.5","new_version":"1.7.1","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pytest-rerunfailures","old_version":"16.4","new_version":"16.6.1","repository_url":"https://github.com/pytest-dev/pytest-rerunfailures"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"py-spy","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/benfred/py-spy"},{"name":"maturin","old_version":"1.13.3","new_version":"1.15.0","repository_url":"https://github.com/pyo3/maturin"},{"name":"python-lsp-server","old_version":"1.14.0","new_version":"1.15.0"},{"name":"python-lsp-ruff","old_version":"2.3.0","new_version":"2.3.4","repository_url":"https://github.com/python-lsp/python-lsp-ruff"},{"name":"playwright","old_version":"1.61.0","new_version":"1.62.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"mypy","old_version":"1.19.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260906","repository_url":"https://github.com/python/typeshed"},{"name":"types-reportlab","old_version":"4.5.0.20260509","new_version":"5.0.0.20260911","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260906","repository_url":"https://github.com/python/typeshed"},{"name":"pybind11","old_version":"3.0.4","new_version":"3.1.0","repository_url":"https://github.com/pybind/pybind11"},{"name":"optuna","old_version":"4.9.0","new_version":"5.0.0","repository_url":"https://github.com/optuna/optuna"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 85 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pin-pink](https://github.com/stephane-caron/pink) | `4.3.0` | `4.4.0` |\n| [reactivex](https://github.com/ReactiveX/RxPY) | `4.1.0` | `5.1.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.23.0` | `3.32.6` |\n| [plum-dispatch](https://github.com/beartype/plum) | `2.5.7` | `2.10.1` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.52` | `3.1.62` |\n| [structlog](https://github.com/hynek/structlog) | `25.5.0` | `26.1.0` |\n| [opencv-contrib-python](https://github.com/opencv/opencv-python) | `4.13.0.92` | `5.0.0.93` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.15.0` |\n| [textual](https://github.com/Textualize/textual) | `3.7.1` | `8.2.8` |\n| [terminaltexteffects](https://github.com/ChrisBuilds/terminaltexteffects) | `0.12.2` | `0.15.0` |\n| [typer](https://github.com/fastapi/typer) | `0.23.1` | `0.27.2` |\n| [ipython](https://github.com/ipython/ipython) | `8.38.0` | `8.39.0` |\n| [plotext](https://github.com/piccolomo/plotext) | `5.3.2` | `6.1.0` |\n| [numba](https://github.com/numba/numba) | `0.63.1` | `0.67.0` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.46.0` | `0.49.0` |\n| [rerun-sdk](https://github.com/rerun-io/rerun) | `0.32.0` | `0.37.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.33.5` | `7.36.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.5` | `50.0.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `7.2.0` | `7.3.0` |\n| [open-clip-torch](https://github.com/mlfoundations/open_clip) | `3.2.0` | `3.3.0` |\n| [gdown](https://github.com/wkentaro/gdown) | `6.0.0` | `6.2.0` |\n| [tensorboard](https://github.com/tensorflow/tensorboard) | `2.20.0` | `2.21.0` |\n| [portal](https://github.com/danijar/portal) | `3.7.4` | `3.8.1` |\n| [bosdyn-client](https://github.com/boston-dynamics/spot-sdk) | `5.1.4` | `5.2.0` |\n| [bosdyn-api](https://github.com/boston-dynamics/spot-sdk) | `5.1.4` | `5.2.0` |\n| [bosdyn-core](https://github.com/boston-dynamics/spot-sdk) | `5.1.4` | `5.2.0` |\n| [pyarrow](https://github.com/apache/arrow) | `23.0.0` | `25.0.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.3.3` | `1.6.3` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.6` | `1.6.2` |\n| [langchain-huggingface](https://github.com/langchain-ai/langchain) | `1.2.0` | `1.2.2` |\n| [langchain-ollama](https://github.com/langchain-ai/langchain) | `1.0.1` | `1.1.0` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.1` | `0.6.2` |\n| [openai](https://github.com/openai/openai-python) | `2.21.0` | `3.14.0` |\n| [sounddevice](https://github.com/spatialaudio/python-sounddevice) | `0.5.5` | `0.5.6` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.129.0` | `0.141.1` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.16.1` | `5.17.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.2.0` | `3.4.11` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.53.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.13.1` | `0.14.0` |\n| [timm](https://github.com/huggingface/pytorch-image-models) | `1.0.24` | `1.0.29` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [lap](https://github.com/gatagat/lap) | `0.5.12` | `0.5.13` |\n| [transformers[torch]](https://github.com/huggingface/transformers) | `4.53.3` | `5.17.0` |\n| [moondream](https://github.com/vikhyat/moondream) | `0.2.0` | `2.3.0` |\n| [omegaconf](https://github.com/omry/omegaconf) | `2.3.0` | `2.3.1` |\n| [hydra-core](https://github.com/facebookresearch/hydra) | `1.3.2` | `1.3.7` |\n| [unitree-webrtc-connect](https://github.com/legion1581/unitree_webrtc_connect) | `2.1.2` | `2.2.0` |\n| [cyclonedds](https://github.com/eclipse-cyclonedds/cyclonedds-python) | `0.10.5` | `11.0.1` |\n| [mcap](https://github.com/foxglove/mcap) | `1.3.1` | `1.4.0` |\n| [piper-sdk](https://github.com/agilexrobotics/piper_sdk) | `0.6.1` | `0.6.2` |\n| [xarm-python-sdk](https://github.com/xArm-Developer/xArm-Python-SDK) | `1.17.3` | `1.18.4` |\n| [roboplan](https://github.com/open-planning/roboplan) | `0.6.0` | `0.6.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [cupy-cuda12x](https://github.com/cupy/cupy) | `13.6.0` | `14.2.0` |\n| [mujoco](https://github.com/google-deepmind/mujoco) | `3.10.0` | `3.13.0` |\n| [gtsam-extended](https://gtsam.org/) | `4.3a1.post1` | `4.3a2.post202608240418` |\n| [aiortc](https://github.com/aiortc/aiortc) | `1.14.0` | `1.15.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [reportlab](https://www.reportlab.com/) | `4.5.0` | `5.0.1` |\n| [manifold3d](https://github.com/elalish/manifold) | `3.5.1` | `3.5.3` |\n| [coacd](https://github.com/SarahWeiii/CoACD) | `1.0.11` | `1.0.14` |\n| [usd-core](https://github.com/PixarAnimationStudios/OpenUSD) | `26.5` | `26.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.3` | `0.16.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.1.1` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.0` | `3.15.1` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.1.5` | `1.7.1` |\n| [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) | `16.4` | `16.6.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.6.2` |\n| [py-spy](https://github.com/benfred/py-spy) | `0.4.1` | `0.4.2` |\n| [maturin](https://github.com/pyo3/maturin) | `1.13.3` | `1.15.0` |\n| [python-lsp-server[all]](https://github.com/python-lsp/python-lsp-server) | `1.14.0` | `1.15.0` |\n| [python-lsp-ruff](https://github.com/python-lsp/python-lsp-ruff) | `2.3.0` | `2.3.4` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.61.0` | `1.62.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.0` | `2.3.1` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260906` |\n| [types-reportlab](https://github.com/python/typeshed) | `4.5.0.20260509` | `5.0.0.20260911` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260906` |\n| [pybind11](https://github.com/pybind/pybind11) | `3.0.4` | `3.1.0` |\n| [optuna](https://github.com/optuna/optuna) | `4.9.0` | `5.0.0` |\n\nUpdates `pin-pink` from 4.3.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stephane-caron/pink/releases\"\u003epin-pink's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.4.0\u003c/h2\u003e\n\u003cp\u003eThis release allows custom boundaries in velocity limits, allowing bounds on joints that can't have a limit from their URDF model (such as continuous joints).\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit: Allow custom boundaries in \u003ccode\u003eVelocityLimit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003edocs: Document assumption that we start from a feasible configuration\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/pink-kinematics/pink/blob/main/CHANGELOG.md\"\u003epin-pink's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.4.0] - 2026-09-09\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit: Allow custom boundaries in \u003ccode\u003eVelocityLimit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003edocs: Document assumption that we start from a feasible configuration\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/pink-kinematics/pink/commit/c14d0ae62f4fb744bbe84e35f9e16f1b680b20c0\"\u003e\u003ccode\u003ec14d0ae\u003c/code\u003e\u003c/a\u003e Release v4.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/5c890570ee42d397f03d1cf8e1b8f4a9797bde97\"\u003e\u003ccode\u003e5c89057\u003c/code\u003e\u003c/a\u003e doc: Add context to configuration limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/7df4f5a323c423b591ff3c35c7e66df40ff9c197\"\u003e\u003ccode\u003e7df4f5a\u003c/code\u003e\u003c/a\u003e Update link to CBF note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/bfd30c7aec222b66fb36629c20439bedb223d161\"\u003e\u003ccode\u003ebfd30c7\u003c/code\u003e\u003c/a\u003e lint: Apply pylint recos in FrameTask\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/e71a42bd424680b039b782de1392b0b7ec2307d9\"\u003e\u003ccode\u003ee71a42b\u003c/code\u003e\u003c/a\u003e lint: Fix pylint recos in ManipulabilityTask\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/a7ac5aa23b591fc203fbdc636d88c1a9b410375c\"\u003e\u003ccode\u003ea7ac5aa\u003c/code\u003e\u003c/a\u003e pixi: Group linting tasks, add format task\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/771c0e0a5d80107771525321927eebb28fbc3400\"\u003e\u003ccode\u003e771c0e0\u003c/code\u003e\u003c/a\u003e lint: Fix two pylint errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/f568e80536549a3b7f627468eb29526d3404c85b\"\u003e\u003ccode\u003ef568e80\u003c/code\u003e\u003c/a\u003e Update type of velocity_limit attribute\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/232c9c0b76db644c212c1e9caa33bda345cb4dd2\"\u003e\u003ccode\u003e232c9c0\u003c/code\u003e\u003c/a\u003e minor: Removed comes before Fixed in Keep a Changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/3b60614b5f25ed8c1ed0f1fc596ec19133665035\"\u003e\u003ccode\u003e3b60614\u003c/code\u003e\u003c/a\u003e Update the changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stephane-caron/pink/compare/v4.3.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `reactivex` from 4.1.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/ReactiveX/RxPY/releases\"\u003ereactivex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev5.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev5.0.0rc2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev5.0.0a2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix title header by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/744\"\u003eReactiveX/RxPY#744\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ReactiveX/RxPY/compare/v5.0.0a1...v5.0.0a2\"\u003ehttps://github.com/ReactiveX/RxPY/compare/v5.0.0a1...v5.0.0a2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.0.0a1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGive run a scheduler parameter by \u003ca href=\"https://github.com/rmahfoud\"\u003e\u003ccode\u003e@​rmahfoud\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/731\"\u003eReactiveX/RxPY#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid use of asyncio.get_event_loop (3.14) by \u003ca href=\"https://github.com/traylenator\"\u003e\u003ccode\u003e@​traylenator\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/728\"\u003eReactiveX/RxPY#728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to uv by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/738\"\u003eReactiveX/RxPY#738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to ruff by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/739\"\u003eReactiveX/RxPY#739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pyright by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/740\"\u003eReactiveX/RxPY#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix subscribe_on not forwarding scheduler to the source  by \u003ca href=\"https://github.com/jcafhe\"\u003e\u003ccode\u003e@​jcafhe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/726\"\u003eReactiveX/RxPY#726\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade deps by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/741\"\u003eReactiveX/RxPY#741\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarify what you can do with the .subscribe Disposable by \u003ca href=\"https://github.com/tmewett\"\u003e\u003ccode\u003e@​tmewett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/686\"\u003eReactiveX/RxPY#686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRxPY v5 by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/743\"\u003eReactiveX/RxPY#743\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/rmahfoud\"\u003e\u003ccode\u003e@​rmahfoud\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/731\"\u003eReactiveX/RxPY#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tmewett\"\u003e\u003ccode\u003e@​tmewett\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/686\"\u003eReactiveX/RxPY#686\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ReactiveX/RxPY/compare/v4.1.0...v5.0.0a1\"\u003ehttps://github.com/ReactiveX/RxPY/compare/v4.1.0...v5.0.0a1\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/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003ereactivex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0 - 2026-07-27\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(operators)\u003c/em\u003e Add tap as an alias for do_action (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/804\"\u003e#804\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/95c54ac3652aed2bf78035c9846cb5867ee58172\"\u003e95c54ac3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(gtk)\u003c/em\u003e Call gi.require_version before importing gi.repository (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/749\"\u003e#749\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/2b9e3f338246acb7b0037c2a2d9b0882a980ce62\"\u003e2b9e3f33\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(operators)\u003c/em\u003e Accept concurrent.futures.Future wherever futures are accepted (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/806\"\u003e#806\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/19da6ac1487e97bb973fcc4dafc69cee4a1e12a7\"\u003e19da6ac1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(scheduler)\u003c/em\u003e Use wall clock time for now() in event loop schedulers (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/809\"\u003e#809\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/361951c7237ae100f33f81e89144935adb281509\"\u003e361951c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/10ccc0a3deba0d004a8f9b6079802ffdb73d1edd..b286407307ace6670f6f0072a8438bc912165d43\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch2\u003e5.0.0 - 2026-07-20\u003c/h2\u003e\n\u003ch3\u003e🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(scripts)\u003c/em\u003e Keep uv.lock in sync and scope the version sed to [project] (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/802\"\u003e#802\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/10ccc0a3deba0d004a8f9b6079802ffdb73d1edd\"\u003e10ccc0a3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/915311e3e002b933f2eb4d59c9eac1cab327ff78..10ccc0a3deba0d004a8f9b6079802ffdb73d1edd\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch2\u003e5.0.0-rc.2 - 2026-07-20\u003c/h2\u003e\n\u003ch3\u003e🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(operators)\u003c/em\u003e Reset retry budget per subscription to fix retry+repeat (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/765\"\u003e#765\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/c3f19d5e83403f70d44331daf0b5a86d410f76d4\"\u003ec3f19d5e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/2975deb528c9eec73c76cf8bb53fc8780f31de45..915311e3e002b933f2eb4d59c9eac1cab327ff78\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch2\u003e5.0.0-rc.1 - 2026-04-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/8b59bc7394f1b6a8a78e2fc4b5efe200d4f47f89..2975deb528c9eec73c76cf8bb53fc8780f31de45\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTyping: Added \u003ccode\u003eAction\u003c/code\u003e and \u003ccode\u003eStartableFactory\u003c/code\u003e to \u003ccode\u003ereactivex.typing.__all__\u003c/code\u003e,\nmaking them part of the explicit public API surface.\u003c/li\u003e\n\u003cli\u003eDocs: Added missing docstring to \u003ccode\u003eon_error_resume_next\u003c/code\u003e operator.\u003c/li\u003e\n\u003cli\u003eOperators: Fixed scheduler forwarding in \u003ccode\u003epairwise\u003c/code\u003e, \u003ccode\u003eto_marbles\u003c/code\u003e, and\n\u003ccode\u003edelay_with_mapper\u003c/code\u003e (subscription-delay path). These operators now pass the\n\u003ccode\u003escheduler\u003c/code\u003e argument through to \u003ccode\u003esource.subscribe(...)\u003c/code\u003e and, in the case of\n\u003ccode\u003edelay_with_mapper\u003c/code\u003e, to the subscription-delay observable, consistent with\nall other pipeable operators. Closes \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/480\"\u003e#480\u003c/a\u003e (partial — the operators listed\nin the issue that were not yet fixed).\u003c/li\u003e\n\u003cli\u003eCI: Skip \u003ccode\u003etests/test_scheduler/test_mainloop/test_tkinterscheduler.py\u003c/code\u003e on\nPyPy (all platforms). The module creates a Tk root at import time; PyPy's\n\u003ccode\u003e_tkinter\u003c/code\u003e finalizer calls \u003ccode\u003ethreading.notify_all\u003c/code\u003e during interpreter\nshutdown and aborts the xdist worker, failing whichever unrelated test\nwas running. Previously guarded only on macOS+PyPy.\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ereactivex.timer(duetime, period)\u003c/code\u003e now correctly resets the initial\ndelay on each resubscription (e.g. via \u003ccode\u003erepeat()\u003c/code\u003e). Previously `nonlocal\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/ReactiveX/RxPY/commit/bbfecfbf83605f2bb2beb8b887dfe5b5fb322a67\"\u003e\u003ccode\u003ebbfecfb\u003c/code\u003e\u003c/a\u003e chore: release reactivex@5.1.0 (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/b286407307ace6670f6f0072a8438bc912165d43\"\u003e\u003ccode\u003eb286407\u003c/code\u003e\u003c/a\u003e docs: correct and expand the GIL free-threading note (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/811\"\u003e#811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/93a4f0417fe5d1d187dbd2d0dfdf2ef3b481c45c\"\u003e\u003ccode\u003e93a4f04\u003c/code\u003e\u003c/a\u003e docs: explain how to parallelize work within a single stream (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/810\"\u003e#810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/2271867415d4beaed62e6f0441fd3312e47079aa\"\u003e\u003ccode\u003e2271867\u003c/code\u003e\u003c/a\u003e Revise GIL section for Python 3.13 updates (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/361951c7237ae100f33f81e89144935adb281509\"\u003e\u003ccode\u003e361951c\u003c/code\u003e\u003c/a\u003e fix(scheduler): use wall clock time for now() in event loop schedulers (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/b809222be63e235f439f65794dd1d4291556d072\"\u003e\u003ccode\u003eb809222\u003c/code\u003e\u003c/a\u003e docs: read version from pyproject instead of git tags (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/808\"\u003e#808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/19e808000610335b4f6d0e0c739b59372b8b5a5f\"\u003e\u003ccode\u003e19e8080\u003c/code\u003e\u003c/a\u003e ci(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/807\"\u003e#807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/dd9b8ec0185ade72dcb3aac983cd495f21ca0a6d\"\u003e\u003ccode\u003edd9b8ec\u003c/code\u003e\u003c/a\u003e refactor(combine-latest): simplify logic by removing redundant loops … (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/19da6ac1487e97bb973fcc4dafc69cee4a1e12a7\"\u003e\u003ccode\u003e19da6ac\u003c/code\u003e\u003c/a\u003e fix(operators): accept concurrent.futures.Future wherever futures are accepte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/2b9e3f338246acb7b0037c2a2d9b0882a980ce62\"\u003e\u003ccode\u003e2b9e3f3\u003c/code\u003e\u003c/a\u003e fix(gtk): call gi.require_version before importing gi.repository (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/749\"\u003e#749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ReactiveX/RxPY/compare/v4.1.0...v5.1.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.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a public \u003ccode\u003eVersionRange\u003c/code\u003e API and \u003ccode\u003eSpecifierSet.to_range()\u003c/code\u003e, representing the versions a specifier set accepts as an interval set that supports intersection, union, difference, complement, set relations, membership tests, and filtering. \u003ccode\u003eVersionRange.to_specifier_set()\u003c/code\u003e converts a range back to a \u003ccode\u003eSpecifierSet\u003c/code\u003e where a PEP 440 form exists. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1267\"\u003e#1267\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1194\"\u003e#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer source distributions over wheels for selected packages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epure_python_tags()\u003c/code\u003e to generate the pure-Python tags for a Python version without touching the running platform. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_subset()\u003c/code\u003e, \u003ccode\u003eSpecifierSet.is_superset()\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.is_disjoint()\u003c/code\u003e, which compare the versions two specifier sets accept. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBehavior adaptations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1157\"\u003e#1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e tags on Linux. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for versions and specifiers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a non-string. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to \u003ccode\u003eVersion.from_parts\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary intersections. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for requirements and markers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for trailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and \u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in sets and dicts. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize requested extra names before comparing or hashing requirements. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/644\"\u003e#644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve a \u003ccode\u003eRequirement\u003c/code\u003e's specifier \u003ccode\u003eprereleases\u003c/code\u003e override across a pickle round trip. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1204\"\u003e#1204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of \u003ccode\u003eInvalidSpecifier\u003c/code\u003e when a requirement contains an invalid specifier. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1332\"\u003e#1332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify the error for post-release prefix wildcards like \u003ccode\u003e==1.0.post1.*\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1299\"\u003e#1299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve quoting semantics when serializing marker values, so round-tripped markers parse back to the same marker. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeep the parentheses of a nested group when serializing markers. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eextra\u003c/code\u003e and \u003ccode\u003edependency_groups\u003c/code\u003e values in nested markers at parse time. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1246\"\u003e#1246\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedComparison\u003c/code\u003e when a set-valued variable like \u003ccode\u003eextras\u003c/code\u003e is used outside the membership form. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1265\"\u003e#1265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedEnvironmentName\u003c/code\u003e (a \u003ccode\u003eKeyError\u003c/code\u003e subclass) for missing environment keys during marker evaluation. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap malformed string literal errors in \u003ccode\u003eInvalidMarker\u003c/code\u003e / \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of leaking a low-level error. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1249\"\u003e#1249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject requirements and markers with a trailing line break. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1345\"\u003e#1345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for metadata and licenses\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCollect all \u003ccode\u003efrom_email\u003c/code\u003e validation errors into one \u003ccode\u003eExceptionGroup\u003c/code\u003e instead of raising the first. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1268\"\u003e#1268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept the UTF-8 charset case-insensitively in email payloads. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1330\"\u003e#1330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject malformed \u003ccode\u003eDescription-Content-Type\u003c/code\u003e values. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1329\"\u003e#1329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't rewrite user values that contain \u003ccode\u003e{field}\u003c/code\u003e placeholders in error messages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1327\"\u003e#1327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRoute multipart email payloads to \u003ccode\u003eunparsed\u003c/code\u003e instead of asserting. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eInvalidMetadata\u003c/code\u003e and \u003ccode\u003eCyclicDependencyGroup\u003c/code\u003e picklable. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1328\"\u003e#1328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFold every line boundary \u003ccode\u003estr.splitlines\u003c/code\u003e recognizes when writing a header with \u003ccode\u003eRFC822Message\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1356\"\u003e#1356\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/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.3 - 2026-08-03\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003eAdd a public :class:\u003ccode\u003e~packaging.ranges.VersionRange\u003c/code\u003e API and\u003cbr /\u003e\n:meth:\u003ccode\u003eSpecifierSet.to_range() \u0026amp;lt;packaging.specifiers.SpecifierSet.to_range\u0026amp;gt;\u003c/code\u003e,\u003cbr /\u003e\nrepresenting the versions a specifier set accepts as an interval set that\u003cbr /\u003e\nsupports intersection, union, difference, complement, set relations,\u003cbr /\u003e\nmembership tests, and filtering.\u003cbr /\u003e\n:meth:\u003ccode\u003e~packaging.ranges.VersionRange.to_specifier_set\u003c/code\u003e converts a range back\u003cbr /\u003e\nto a :class:\u003ccode\u003e~packaging.specifiers.SpecifierSet\u003c/code\u003e where a PEP 440 form exists.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1267\u003c/code\u003e, :pull:\u003ccode\u003e1270\u003c/code\u003e, :pull:\u003ccode\u003e1298\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (:pull:\u003ccode\u003e1194\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets.\u003cbr /\u003e\n(:issue:\u003ccode\u003e1220\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer\u003cbr /\u003e\nsource distributions over wheels for selected packages. (:pull:\u003ccode\u003e1334\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :func:\u003ccode\u003e~packaging.tags.pure_python_tags\u003c/code\u003e to generate the pure-Python\u003cbr /\u003e\ntags for a Python version without touching the running platform.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1346\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003eSpecifierSet.is_subset() \u0026amp;lt;packaging.specifiers.SpecifierSet.is_subset\u0026amp;gt;\u003c/code\u003e, :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_superset\u003c/code\u003e,\u003cbr /\u003e\nand :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_disjoint\u003c/code\u003e, which compare the\u003cbr /\u003e\nversions two specifier sets accept. (:pull:\u003ccode\u003e1313\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1157\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e\u003cbr /\u003e\ntags on Linux. (:issue:\u003ccode\u003e160\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for versions and specifiers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a\u003cbr /\u003e\nnon-string. (:pull:\u003ccode\u003e1319\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to\u003cbr /\u003e\n\u003ccode\u003eVersion.from_parts\u003c/code\u003e. (:pull:\u003ccode\u003e1241\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1242\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary\u003cbr /\u003e\nintersections. (:pull:\u003ccode\u003e1257\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for requirements and markers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for\u003cbr /\u003e\ntrailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and\u003cbr /\u003e\n\u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in\u003cbr /\u003e\nsets and dicts. (:pull:\u003ccode\u003e1232\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\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/packaging/commit/929fd4b1410ac7ef61ef3f45b2f5d7e87711a9b5\"\u003e\u003ccode\u003e929fd4b\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f300ebf0c155e1f7ea6d62fba11dba4bac3d1944\"\u003e\u003ccode\u003ef300ebf\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pre-commit group with 5 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f91d97566a966177ad7ea5a7c703b12a7273e3b1\"\u003e\u003ccode\u003ef91d975\u003c/code\u003e\u003c/a\u003e ci(downstream): bump hatchling to 1.31.0 and fix its pytest rootdir (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/b1a7124fe3d40c3302c029e9eb01ac3fc3496a54\"\u003e\u003ccode\u003eb1a7124\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 7 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2d873eb6002021a8c007c933fbdab58b37a5079b\"\u003e\u003ccode\u003e2d873eb\u003c/code\u003e\u003c/a\u003e fix(metadata): fold every line boundary when writing headers (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1356\"\u003e#1356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/413d006fadf5b9b14d78ad444201d8189bff8c64\"\u003e\u003ccode\u003e413d006\u003c/code\u003e\u003c/a\u003e docs: changelog for 26.3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1343\"\u003e#1343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4eb0753dba8fcaaac8eb75463374e448f0931558\"\u003e\u003ccode\u003e4eb0753\u003c/code\u003e\u003c/a\u003e docs(metadata): explain selective field validation (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1342\"\u003e#1342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/77e9ed42b6db9c5c011a5148047a356ebe42692a\"\u003e\u003ccode\u003e77e9ed4\u003c/code\u003e\u003c/a\u003e feat(tags): add pure Python tag generator (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/7cea5e88671ed14016e9ab3dd08eab064f596564\"\u003e\u003ccode\u003e7cea5e8\u003c/code\u003e\u003c/a\u003e ci: drop 3.13t on Windows (3.13.14t may fail to build, run takes 9 minutes) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/45a8b3402db5ff82158f2d0eabaf8447aa7a50bf\"\u003e\u003ccode\u003e45a8b34\u003c/code\u003e\u003c/a\u003e docs: add missing versionadded/versionchanged directives (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1344\"\u003e#1344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.23.0 to 3.32.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.32.6\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(lease): reject a duration no marker can carry by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/723\"\u003etox-dev/filelock#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(soft-rw): reject non-finite timing options by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/724\"\u003etox-dev/filelock#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve exception notes when copying and pickling by \u003ca href=\"https://github.com/jackwalkerlabs\"\u003e\u003ccode\u003e@​jackwalkerlabs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/729\"\u003etox-dev/filelock#729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest(soft-rw): reuse existing test module by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/730\"\u003etox-dev/filelock#730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: respect ACL write access when the owner write bit is absent by \u003ca href=\"https://github.com/jackwalkerlabs\"\u003e\u003ccode\u003e@​jackwalkerlabs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/728\"\u003etox-dev/filelock#728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix SoftReadWriteLock state lock timeout by \u003ca href=\"https://github.com/Sohel2309\"\u003e\u003ccode\u003e@​Sohel2309\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/726\"\u003etox-dev/filelock#726\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/jackwalkerlabs\"\u003e\u003ccode\u003e@​jackwalkerlabs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/729\"\u003etox-dev/filelock#729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sohel2309\"\u003e\u003ccode\u003e@​Sohel2309\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/726\"\u003etox-dev/filelock#726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.5...3.32.6\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.5...3.32.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(fork): report where a stalled fork stops by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/715\"\u003etox-dev/filelock#715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: say that mode is read-only in the thread-local section by \u003ca href=\"https://github.com/Gares95\"\u003e\u003ccode\u003e@​Gares95\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/716\"\u003etox-dev/filelock#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(lease): clear token after failed acquire by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\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/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix: retry transient denials on open and claim read by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/705\"\u003etox-dev/filelock#705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: deflake six scheduled-run failures by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/704\"\u003etox-dev/filelock#704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: cover a reclaimed private record for real by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/706\"\u003etox-dev/filelock#706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(fork): fork once the event loop has closed by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/714\"\u003etox-dev/filelock#714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore: batch dependency updates weekly on Tuesday by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/713\"\u003etox-dev/filelock#713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eescape the hostname every marker publishes by \u003ca href=\"https://github.com/dxbjavid\"\u003e\u003ccode\u003e@​dxbjavid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/709\"\u003etox-dev/filelock#709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(strict): deflake close-fault injections on graalpy by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/697\"\u003etox-dev/filelock#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📄 docs: publish llms.txt from the docs build by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/700\"\u003etox-dev/filelock#700\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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003cp\u003e.. towncrier-draft-entries:: Unreleased\u003c/p\u003e\n\u003cp\u003e.. towncrier release notes start\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e4.0.1 (2026-09-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epoll_interval\u003c/code\u003e is now validated at construction, on the setter, and on \u003ccode\u003eacquire()\u003c/code\u003e: a negative, non-finite, or\nnon-numeric value raises :class:\u003ccode\u003eValueError\u003c/code\u003e/:class:\u003ccode\u003eTypeError\u003c/code\u003e immediately instead of failing inside \u003ccode\u003etime.sleep\u003c/code\u003e. :pr:\u003ccode\u003e739\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e4.0.0 (2026-09-17)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eThe :class:\u003ccode\u003e~filelock.SoftReadWriteLock\u003c/code\u003e on-disk protocol is a generation log under \u003ccode\u003e\u0026lt;path\u0026gt;.rw\u003c/code\u003e, and a process\nrunning an earlier release does not see it: an old and a new participant on one lock path do not exclude each\nother. Stop every participant, upgrade them all, then restart them; the new code ignores leftover \u003ccode\u003e.state\u003c/code\u003e,\n\u003ccode\u003e.write\u003c/code\u003e and \u003ccode\u003e.readers/\u003c/code\u003e files, and you can delete them. The filesystem must provide no-replace hard links, as\nit must for :class:\u003ccode\u003e~filelock.StrictSoftFileLock\u003c/code\u003e, so a runtime without \u003ccode\u003eos.link\u003c/code\u003e raises\n:class:\u003ccode\u003e~filelock.SoftFileLockProtocolError\u003c/code\u003e on acquire. Constructing a singleton again with a different\n\u003ccode\u003eon_compromise\u003c/code\u003e, or with \u003ccode\u003epoll_interval\u003c/code\u003e at or above \u003ccode\u003estale_threshold\u003c/code\u003e, now raises :class:\u003ccode\u003eValueError\u003c/code\u003e. :pr:\u003ccode\u003e735\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003e~filelock.SoftReadWriteLock\u003c/code\u003e exposes :attr:\u003ccode\u003e~filelock.SoftReadWriteLock.generation\u003c/code\u003e as a fencing token for\nthe protected resource and reports a lost hold through \u003ccode\u003eon_compromise\u003c/code\u003e and\n:attr:\u003ccode\u003e~filelock.SoftReadWriteLock.compromise\u003c/code\u003e. :pr:\u003ccode\u003e735\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003e~filelock.SoftReadWriteLock\u003c/code\u003e no longer deadlocks when a holder dies on another host mid-transition, and\n\u003ccode\u003erelease()\u003c/code\u003e no longer waits on a mutex a dead host left behind (:pr:\u003ccode\u003e725\u003c/code\u003e, :pr:\u003ccode\u003e735\u003c/code\u003e). The state mutex is gone.\nEach transition is one atomic snapshot commit, and liveness is a heartbeat nonce read on the observer's own clock\nrather than an \u003ccode\u003emtime\u003c/code\u003e read against another host's. :pr:\u003ccode\u003e735\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.7 (2026-09-16)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eValidate final-symlink refusal by error number so the test works across libc implementations. :pr:\u003ccode\u003e737\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocument that :meth:\u003ccode\u003e~filelock.BaseFileLock.acquire\u003c/code\u003e reads \u003ccode\u003eblocking=None\u003c/code\u003e as the lock's \u003ccode\u003eblocking\u003c/code\u003e attribute and\nraises :class:\u003ccode\u003e~filelock.Timeout\u003c/code\u003e after one attempt when \u003ccode\u003eblocking=False\u003c/code\u003e. :pr:\u003ccode\u003e733\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.6 (2026-09-08)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSoftFileLease\u003c/code\u003e and \u003ccode\u003eAsyncSoftFileLease\u003c/code\u003e now reject a boolean or non-finite \u003ccode\u003elease_duration\u003c/code\u003e, which used to\npublish an owner record their own \u003ccode\u003eowner\u003c/code\u003e property reads back as malformed. :pr:\u003ccode\u003e723\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject non-finite heartbeat, stale, and polling intervals in \u003ccode\u003eSoftReadWriteLock\u003c/code\u003e and \u003ccode\u003eAsyncSoftReadWriteLock\u003c/code\u003e,\nincluding cached singleton construction and overflow in the default stale threshold. :pr:\u003ccode\u003e724\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/tox-dev/filelock/commit/4efd93e0482e8095a0b6949fb337206e7f67495d\"\u003e\u003ccode\u003e4efd93e\u003c/code\u003e\u003c/a\u003e Release 3.32.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/7b7b7a8b9b10acf826cca246441297468039b0c1\"\u003e\u003ccode\u003e7b7b7a8\u003c/code\u003e\u003c/a\u003e Fix SoftReadWriteLock state lock timeout (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f2f7b8696426c518b6828ea10e755c0ba2a4ffe2\"\u003e\u003ccode\u003ef2f7b86\u003c/code\u003e\u003c/a\u003e fix: respect ACL write access when the owner write bit is absent (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/e947a694fb0da6676c4861c8bfef3650e5656153\"\u003e\u003ccode\u003ee947a69\u003c/code\u003e\u003c/a\u003e test(soft-rw): reuse existing test module (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/730\"\u003e#730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/da3ae2bca0035fb9e5269257e6f393360866cf88\"\u003e\u003ccode\u003eda3ae2b\u003c/code\u003e\u003c/a\u003e fix: preserve exception notes when copying and pickling (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/ae9cb5b2d66d6a79edd76b292fa7320c11468812\"\u003e\u003ccode\u003eae9cb5b\u003c/code\u003e\u003c/a\u003e 🐛 fix(soft-rw): reject non-finite timing options (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/d00f9bbd709fbe92a99a38cb1e32b6690813e5a8\"\u003e\u003ccode\u003ed00f9bb\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/82f66d7b0aaa83755f8d71d0b0da88408b58ec4a\"\u003e\u003ccode\u003e82f66d7\u003c/code\u003e\u003c/a\u003e 🐛 fix(lease): reject a duration no marker can carry (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1d9e9e7e43a1089c57d7c6f20d6a2268235a4745\"\u003e\u003ccode\u003e1d9e9e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1585dfef9355a5c77d4a9498cc34d3a98056fdb9\"\u003e\u003ccode\u003e1585dfe\u003c/code\u003e\u003c/a\u003e Release 3.32.5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.23.0...3.32.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plum-dispatch` from 2.5.7 to 2.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/beartype/plum/releases\"\u003eplum-dispatch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimise \u003ccode\u003e_wrap_type_hint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/310\"\u003e#310\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBuild macOS arm64 mypyc wheels (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/320\"\u003e#320\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/beartype/plum/issues/317\"\u003e#317\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/318\"\u003e#318\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/319\"\u003e#319\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCompile more things with \u003ccode\u003emypyc\u003c/code\u003e for faster dispatch (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/287\"\u003e#287\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/beartype/plum/issues/288\"\u003e#288\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/289\"\u003e#289\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake concurrent dispatch resolution thread safe (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/281\"\u003e#281\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix support for \u003ccode\u003ebeartype\u0026gt;=0.23\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/296\"\u003e#296\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImprove typing (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/268\"\u003e#268\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eVal\u003c/code\u003e, which was deprecated in v0.5.0 in favour of \u003ccode\u003etyping.Literal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/269\"\u003e#269\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport union aliases in Python 3.14 and later (\u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.8.0\u003c/h2\u003e\n\u003cp\u003eStarting this release, Plum will be available on PyPI as both \u003ccode\u003eplum-dispatch\u003c/code\u003e and \u003ccode\u003eplum\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003ev2.7.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003efaithful\u003c/code\u003e keyword to \u003ccode\u003eModuleType\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e All imports should now go through \u003ccode\u003eplum\u003c/code\u003e directly! That is, not \u003ccode\u003eplum.signature.Signature\u003c/code\u003e, but \u003ccode\u003eplum.Signature\u003c/code\u003e. Please do open an issue if this release breaks something that shouldn't break.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSignificantly improve typing of the internals (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/179\"\u003e#179\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/242\"\u003e#242\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSwitch to \u003ccode\u003euv\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/218\"\u003e#218\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake modules private for public/private separation (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/241\"\u003e#241\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSwitch to \u003ccode\u003esrc\u003c/code\u003e layout (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/249\"\u003e#249\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImprove config (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/248\"\u003e#248\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003emypyc\u003c/code\u003e builds for better performance (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/247\"\u003e#247\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e)!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.1\u003c/h2\u003e\n\u003cp\u003eThis release features numerous very helpful contributions and improvements by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse dependency groups (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/195\"\u003e#195\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003etyping_extensions\u003c/code\u003e as standard library and make more use of it (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/226\"\u003e#226\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/232\"\u003e#232\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eComplete deprecation cycles (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/230\"\u003e#230\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/236\"\u003e#236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTurn various arguments into positional-only (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/229\"\u003e#229\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove unnecessary path manipulation (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/233\"\u003e#233\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRework tests with a \u003ccode\u003edispatch\u003c/code\u003e fixture (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/234\"\u003e#234\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAvoid using a deprecated NumPy module (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/231\"\u003e#231\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDrops support for Python 3.9 (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/228\"\u003e#228\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImport exports from \u003ccode\u003emethods.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/237\"\u003e#237\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixes an incorrect \u003ccode\u003eoverload\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/238\"\u003e#238\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003enox\u003c/code\u003e for testing (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/235\"\u003e#235\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/240\"\u003e#240\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/beartype/plum/issues/228\"\u003e#228\u003c/a\u003e also fixes an important bug to do with the handling of unions (CC \u003ca href=\"https://github.com/davidwyld\"\u003e\u003ccode\u003e@​davidwyld\u003c/code\u003e\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003ev2.6.0\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/beartype/plum/commit/c835c8cf5ebea4f00ee304a647e026739034e63b\"\u003e\u003ccode\u003ec835c8c\u003c/code\u003e\u003c/a\u003e fix(mypyc): keep \u003ccode\u003eFunction\u003c/code\u003e weak-referenceable on the compiled wheels (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/319\"\u003e#319\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/dimensionalOS/dimos/pull/4260","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimensionalOS%2Fdimos/issues/4260","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4260/packages"},{"uuid":"5513101412","node_id":"PR_kwDOT_waCs8AAAABEP-mQw","number":89,"state":"open","title":"build(deps): bump the pip-minor-patch group in /services/ai-orchestrator-service with 70 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-19T19:44:57.000Z","updated_at":"2026-09-19T19:44:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-minor-patch","update_count":70,"packages":[{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"build","old_version":"1.5.0","new_version":"1.6.1","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cloudpathlib","old_version":"0.24.0","new_version":"0.25.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"contourpy","old_version":"1.3.3","new_version":"1.4.0","repository_url":"https://github.com/contourpy/contourpy"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.139.2","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.30.2","new_version":"3.32.7","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.65.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2026.6.0","new_version":"2026.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.55.2","new_version":"2.58.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-genai","old_version":"2.12.0","new_version":"2.23.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"googleapis-common-protos","old_version":"1.75.0","new_version":"1.75.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.82.1","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"hf-xet","old_version":"1.5.2","new_version":"1.6.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"huggingface-hub","old_version":"1.23.0","new_version":"1.31.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jiter","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain","old_version":"1.3.14","new_version":"1.4.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-google-genai","old_version":"4.2.7","new_version":"4.4.0","repository_url":"https://github.com/langchain-ai/langchain-google"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.5","new_version":"0.12.6","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"mmh3","old_version":"5.2.1","new_version":"5.3.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.7.1","new_version":"6.8.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.24.0","new_version":"2.26.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.5.1","new_version":"2.5.3","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.27.0","new_version":"1.30.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pandas","old_version":"3.0.3","new_version":"3.0.5","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"propcache","old_version":"0.5.2","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pybase64","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.49.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyproject-hooks","old_version":"1.2.0","new_version":"1.3.3","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.9.10","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"scikit-learn","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.18.0","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"smart-open","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.13.0","new_version":"2.14.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"transformers","old_version":"5.14.1","new_version":"5.17.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.26.8","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.3","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.53.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wrapt","old_version":"2.2.2","new_version":"2.4.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.24.2","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"}],"path":"/services/ai-orchestrator-service","ecosystem":"pip"},"body":"Bumps the pip-minor-patch group in /services/ai-orchestrator-service with 70 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [build](https://github.com/pypa/build) | `1.5.0` | `1.6.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.24.0` | `0.25.0` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.3` | `1.4.0` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.2` | `0.141.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.30.2` | `3.32.7` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.65.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.6.0` | `2026.7.0` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.55.2` | `2.58.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.12.0` | `2.23.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.75.0` | `1.75.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.82.1` | `1.84.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.5.2` | `1.6.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.23.0` | `1.31.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jiter](https://github.com/pydantic/jiter) | `0.16.0` | `0.17.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.14` | `1.4.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.3` |\n| [langchain-google-genai](https://github.com/langchain-ai/langchain-google) | `4.2.7` | `4.4.0` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.5` | `0.12.6` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.1` | `5.3.0` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.1` | `6.8.0` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.24.0` | `2.26.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.5.1` | `2.5.3` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.27.0` | `1.30.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.3` | `3.0.5` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.5.2` | `0.5.4` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.3` | `1.5.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.49.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.2.0` | `1.3.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.9.10` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.9.0` | `1.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.18.0` | `1.18.1` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `8.0.0` | `8.0.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.2` |\n| [torch](https://github.com/pytorch/pytorch) | `2.13.0` | `2.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.1` |\n| [transformers](https://github.com/huggingface/transformers) | `5.14.1` | `5.17.0` |\n| [typer](https://github.com/fastapi/typer) | `0.26.8` | `0.27.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.3` | `2026.4` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.53.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.2.2` | `2.4.1` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.25.1` |\n\nUpdates `aiohttp` from 3.14.1 to 3.14.3\nUpdates `annotated-doc` from 0.0.4 to 0.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/releases\"\u003eannotated-doc's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \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⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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 github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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/annotated-doc/pull/89\"\u003e#89\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👷 Add GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\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 alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\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🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\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 branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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 actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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 ty from 0.0.27 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/52\"\u003e#52\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/blob/main/release-notes.md\"\u003eannotated-doc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5 (2026-07-28)\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \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⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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 github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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/annotated-doc/pull/89\"\u003e#89\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👷 Add GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\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 alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\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🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\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 branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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 actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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/annotated-doc/commit/ef48d6ad51d226f772fd9c5284f55199afe4007c\"\u003e\u003ccode\u003eef48d6a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.5 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/93\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/c628000835a26f6bc8c776f90bcbcf95211f233b\"\u003e\u003ccode\u003ec628000\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/e0b4579d2ad8d62a304c9f30a1c2c084f0d372e5\"\u003e\u003ccode\u003ee0b4579\u003c/code\u003e\u003c/a\u003e ➖ Drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/36\"\u003e#36\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/ef956b4e9f2c0e2bead1cba7a6888e1ed8c2c237\"\u003e\u003ccode\u003eef956b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/84bf1e5402c5e0cfd1462c5d3c8bae22fb717bd8\"\u003e\u003ccode\u003e84bf1e5\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade latest-changes to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cf773e138b1dc5608ce0f0d11e1939c410ef6228\"\u003e\u003ccode\u003ecf773e1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/1375d6eb8147cb2352d080ef09f356dfc18e0d29\"\u003e\u003ccode\u003e1375d6e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cd373656cbf40e5fd4cc28680ca5e05bf12709cb\"\u003e\u003ccode\u003ecd37365\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/f9f3b695cbacc4ffc37d9cebff6e05bd1751f68a\"\u003e\u003ccode\u003ef9f3b69\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/842084457f0a7739fb91d2a4ea602b2bc4e15767\"\u003e\u003ccode\u003e8420844\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/annotated-doc/compare/0.0.4...0.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.5.0 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore[v1]: prepare for v1.6.1 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1181\"\u003epypa/build#1181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.6.0...1.6.1\"\u003ehttps://github.com/pypa/build/compare/1.6.0...1.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace prettier with mdformat and yamlfmt by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1133\"\u003epypa/build#1133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLet yamlfmt format the workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1134\"\u003epypa/build#1134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(release): semver auto bump, changelog reflow, and roll back 1.5.1 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1132\"\u003epypa/build#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hash verification in --dependency-constraints-txt could be silently skipped by \u003ca href=\"https://github.com/manfred-kaiser\"\u003e\u003ccode\u003e@​manfred-kaiser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1140\"\u003epypa/build#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): bump build-and-inspect-python-package to v3.0.1 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1147\"\u003epypa/build#1147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): pin coverage core to ctrace so test contexts record by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1148\"\u003epypa/build#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: run mypy on more parts of the code by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1151\"\u003epypa/build#1151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: turn up strictness on mypy by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1153\"\u003epypa/build#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: faster mypy, fix merge error by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1156\"\u003epypa/build#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): rerun integration tests on transient network errors by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1150\"\u003epypa/build#1150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: clean up unused casts in tests by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1154\"\u003epypa/build#1154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(typing): apply review feedback from \u003ca href=\"https://redirect.github.com/pypa/build/issues/1093\"\u003e#1093\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1155\"\u003epypa/build#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Generator is more accurate than Iterator by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1152\"\u003epypa/build#1152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: mark test_main_sdist_input_end_to_end with pytest.mark.network by \u003ca href=\"https://github.com/frenzymadness\"\u003e\u003ccode\u003e@​frenzymadness\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1144\"\u003epypa/build#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;⚠️ feat(util): deprecate project_wheel_metadata\u0026quot; by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1158\"\u003epypa/build#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: download integration sources once per run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1157\"\u003epypa/build#1157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse stdlib \u003ccode\u003eimportlib.metadata\u003c/code\u003e for typing by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1162\"\u003epypa/build#1162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop redundant \u003ccode\u003eexc_info\u003c/code\u003e parameter from backend exception wrapper by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1161\"\u003epypa/build#1161\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop a few PyPy-specific test skips by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1164\"\u003epypa/build#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore: batch dependency updates weekly on Tuesday by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1165\"\u003epypa/build#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👷 ci: use app token for releases by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1169\"\u003epypa/build#1169\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/manfred-kaiser\"\u003e\u003ccode\u003e@​manfred-kaiser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1140\"\u003epypa/build#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frenzymadness\"\u003e\u003ccode\u003e@​frenzymadness\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1144\"\u003epypa/build#1144\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pypa/build/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): accept sdist tarball as srcdir argument by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1057\"\u003epypa/build#1057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: drop 3.9 branches for version_info checks by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1059\"\u003epypa/build#1059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: skip test_uv_install_strips_pythonpath with missing uv by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1063\"\u003epypa/build#1063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove myself from codeowners by \u003ca href=\"https://github.com/FFY00\"\u003e\u003ccode\u003e@​FFY00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1066\"\u003epypa/build#1066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: safe_extractall to use pathlib.Path by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1060\"\u003epypa/build#1060\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.6.1 (2026-09-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid trying to detect symlinks on Windows, regression in 1.6.0 - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1175\u003c/code\u003e) (:issue:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eDocumentation\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix doubled backslashes in the Windows pip config path (\u003ccode\u003e%APPDATA%\\pip\\pip.ini\u003c/code\u003e) in the docs - by :user:\u003ccode\u003earoh3006\u003c/code\u003e\n(:issue:\u003ccode\u003e1149\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1168\u003c/code\u003e, :issue:\u003ccode\u003e1170\u003c/code\u003e, :issue:\u003ccode\u003e1178\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.6.0 (2026-08-27)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--report=PATH\u003c/code\u003e to write a machine-readable JSON report of built artifacts; \u003ccode\u003e--metadata\u003c/code\u003e now also accepts\n\u003ccode\u003e.whl\u003c/code\u003e files - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e198\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003esrcdir\u003c/code\u003e argument now accepts \u003ccode\u003e.tar.gz\u003c/code\u003e source distributions, extracting and building from them - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e311\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eThe \u0026quot;Unmet dependencies\u0026quot; error from \u003ccode\u003e--no-isolation\u003c/code\u003e builds now shows the wanted version, found version, and\ninterpreter - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e504\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--sdist-extract-dir\u003c/code\u003e to extract the intermediate sdist into a persistent directory, enabling compiler cache\nreuse across rebuilds - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e614\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--env-dir\u003c/code\u003e to place the isolated build environment at a fixed path, enabling compiler cache reuse across builds\n\u003cul\u003e\n\u003cli\u003eby :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e655\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePrint a summary of resolved dependency versions (\u003ccode\u003ename==version\u003c/code\u003e) after installing them in isolated builds - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e959\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOn build failure, print a tip pointing to \u003ccode\u003e--env-dir\u003c/code\u003e and \u003ccode\u003e--sdist-extract-dir\u003c/code\u003e for debugging and link to the\n\u0026quot;Debug a failed build\u0026quot; how-to - reported by :user:\u003ccode\u003edimpase\u003c/code\u003e, implemented by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e966\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/89cccef40df9011f03bec18cf52c53d1096ed6ee\"\u003e\u003ccode\u003e89cccef\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a6f707a75fc8548d7707645e97c7903197387849\"\u003e\u003ccode\u003ea6f707a\u003c/code\u003e\u003c/a\u003e ci: support releases from v* branches (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1178\"\u003e#1178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/77851610de5d3894fa8a88e06e0232901cf93758\"\u003e\u003ccode\u003e7785161\u003c/code\u003e\u003c/a\u003e docs: fix doubled backslashes in Windows pip config path (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1149\"\u003e#1149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/244b250c3219070eebb29764f7709262d48afd41\"\u003e\u003ccode\u003e244b250\u003c/code\u003e\u003c/a\u003e fix: always use copies for the isolated venv on Windows (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c93ca6f6d252e4d8df7fda4a61f8f9ed8a55a411\"\u003e\u003ccode\u003ec93ca6f\u003c/code\u003e\u003c/a\u003e build(deps): bump re-actors/alls-green from 1.2.2 to 1.3.0 in the github-acti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e02ffd32241aec2e306d90869417c1e900c0adb4\"\u003e\u003ccode\u003ee02ffd3\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1173\"\u003e#1173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/aad39a800e3d81bf907018ebe2fab135717da59b\"\u003e\u003ccode\u003eaad39a8\u003c/code\u003e\u003c/a\u003e docs: fix changelog page heading levels and sidebar (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/5c3fd46b5c38c7caea5dd95ce365971104a734aa\"\u003e\u003ccode\u003e5c3fd46\u003c/code\u003e\u003c/a\u003e docs: use PyPI ref directly (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1172\"\u003e#1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/1c5bd6c21cbd33c1816978d45219d48fb4c2b269\"\u003e\u003ccode\u003e1c5bd6c\u003c/code\u003e\u003c/a\u003e 🐛 fix(release): format generated changelog (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/7f0cc7ed19969558c7daeaa3652ce2ffc81599c1\"\u003e\u003ccode\u003e7f0cc7e\u003c/code\u003e\u003c/a\u003e 🔧 build(type): replace mypy with pyrefly (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.5.0...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.6.17 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.06.17...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.1.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.9 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/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/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/char...\n\n_Description has been truncated_","html_url":"https://github.com/RanugaVW/Clario-multiAgent-triage-micro-services/pull/89","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/RanugaVW%2FClario-multiAgent-triage-micro-services/issues/89","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/89/packages"},{"uuid":"5469471709","node_id":"PR_kwDOTZpjNs8AAAABDs21bA","number":26,"state":"closed","title":"chore(deps): bump the pip-minor-patch group across 1 directory with 76 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-23T02:15:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-16T02:22:32.000Z","updated_at":"2026-09-23T02:15:41.000Z","time_to_close":604387,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip-minor-patch","update_count":76,"packages":[{"name":"langchain","old_version":"1.3.13","new_version":"1.4.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.3.5","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pypdfium2","old_version":"5.11.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"duckdb","old_version":"1.5.4","new_version":"1.5.5","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"scikit-learn","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"yfinance","old_version":"1.5.1","new_version":"1.7.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"akshare","old_version":"1.18.64","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"ccxt","old_version":"4.5.64","new_version":"4.5.78","repository_url":"https://github.com/ccxt/ccxt"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"sse-starlette","old_version":"3.4.5","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"ddgs","old_version":"9.14.4","new_version":"9.16.0","repository_url":"https://github.com/deedy5/ddgs"},{"name":"matplotlib","old_version":"3.11.0","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"pyjwt","old_version":"2.13.0","new_version":"2.14.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cachetools","old_version":"7.1.4","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"caio","old_version":"0.10.2","new_version":"0.12.4","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"curl-cffi","old_version":"0.15.0","new_version":"0.16.3","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"cyclopts","old_version":"4.21.0","new_version":"4.25.2","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.65.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"griffelib","old_version":"2.1.0","new_version":"2.3.0"},{"name":"h2","old_version":"4.3.0","new_version":"4.4.1","repository_url":"https://github.com/python-hyper/h2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jiter","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joserfc","old_version":"1.7.3","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.2","new_version":"0.12.4","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"llvmlite","old_version":"0.48.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"multidict","old_version":"6.7.1","new_version":"6.8.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.23.0","new_version":"2.26.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numba","old_version":"0.66.0","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"opentelemetry-api","old_version":"1.43.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"peewee","old_version":"4.2.1","new_version":"4.5.1","repository_url":"https://github.com/coleifer/peewee"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.8","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic-core","old_version":"2.47.0","new_version":"2.49.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyphen","old_version":"0.17.2","new_version":"0.18.1","repository_url":"https://github.com/Kozea/Pyphen"},{"name":"pytz","old_version":"2026.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.9.10","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"simplejson","old_version":"4.1.1","new_version":"4.1.2","repository_url":"https://github.com/simplejson/simplejson"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tiktoken","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.3","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"yarl","old_version":"1.24.2","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 76 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.13` | `1.4.0` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.3` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.3.5` | `1.6.2` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.11.0` | `5.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.4` | `1.5.5` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.9.0` | `1.9.1` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.1` | `1.7.0` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.64` | `1.18.94` |\n| [ccxt](https://github.com/ccxt/ccxt) | `4.5.64` | `4.5.78` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.5` | `3.4.11` |\n| [ddgs](https://github.com/deedy5/ddgs) | `9.14.4` | `9.16.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.0` | `3.11.2` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.13.0` | `2.14.0` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.4` | `7.1.8` |\n| [caio](https://github.com/mosquito/caio) | `0.10.2` | `0.12.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.15.0` | `0.16.3` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.21.0` | `4.25.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.65.0` |\n| griffelib | `2.1.0` | `2.3.0` |\n| [h2](https://github.com/python-hyper/h2) | `4.3.0` | `4.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.16.0` | `0.17.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.3` | `1.7.5` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.2` | `0.12.4` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.48.0` | `0.49.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.1` | `6.8.0` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.23.0` | `2.26.0` |\n| [numba](https://github.com/numba/numba) | `0.66.0` | `0.67.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.43.0` | `1.44.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [peewee](https://github.com/coleifer/peewee) | `4.2.1` | `4.5.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.8` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.47.0` | `2.49.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyphen](https://github.com/Kozea/Pyphen) | `0.17.2` | `0.18.1` |\n| [pytz](https://github.com/stub42/pytz) | `2026.2` | `2026.3.post1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.9.10` |\n| [simplejson](https://github.com/simplejson/simplejson) | `4.1.1` | `4.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.13.0` | `0.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.3` | `2026.4` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.24.5` |\n\n\nUpdates `langchain` from 1.3.13 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-perplexity==1.4.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-perplexity==1.3.2\u003c/p\u003e\n\u003cp\u003erelease(perplexity): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37993\"\u003e#37993\u003c/a\u003e)\nfeat(perplexity): \u003ccode\u003ebind_tools\u003c/code\u003e and Responses-API tool round-trip (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37934\"\u003e#37934\u003c/a\u003e)\nhotfix(openai): min core dep (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37990\"\u003e#37990\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.4.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.3.5\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38983\"\u003e#38983\u003c/a\u003e)\nchore: bump pillow from 12.2.0 to 12.3.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38999\"\u003e#38999\u003c/a\u003e)\nfeat(core): add \u003ccode\u003ereasoning_effort\u003c/code\u003e as a standard chat model parameter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38887\"\u003e#38887\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38797\"\u003e#38797\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.4.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.18\u003c/p\u003e\n\u003cp\u003edocs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\nfeat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\nperf(anthropic,langchain): omit middleware trace inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40098\"\u003e#40098\u003c/a\u003e)\nfix(langchain): include model destination in agent tool routing (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38355\"\u003e#38355\u003c/a\u003e)\nchore(langchain): bump vcrpy test dependency minimum to \u003ccode\u003e\u0026gt;=8.2.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39942\"\u003e#39942\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.4.0a4\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.4.0a4\ntest(langchain): cover mixed-era ClientGroup and group elicitation\nUpdate libs/langchain_v1/langchain/mcp/adapter.py\nfix(langchain): drive MCP elicitation via member session for fastmcp 4.0.1\nfix(sdk): use latest fastmcp and rm reentrant impl\ncr\ncr\nrefactor(langchain): inline MCP client arming into \u003ccode\u003e__init__\u003c/code\u003e\nrefactor(langchain): stamp an arm marker instead of introspecting the handler closure\nfix(langchain): gate MCP interrupt routing on the negotiated protocol era\nrefactor(langchain): drop MCP \u003ccode\u003eelicitation\u003c/code\u003e flag, derive interrupt routing from the client\nfix(sdk): add _ReentrantClientGroup\nfix(langchain): narrow \u003ccode\u003eMCPAdapter.client\u003c/code\u003e union in mcp tests for mypy\nchore(langchain): format \u003ccode\u003emcp/adapter.py\u003c/code\u003e\nrelease(langchain): 1.4.0a3\nfeat(langchain): group MCP tool metadata under an \u003ccode\u003emcp\u003c/code\u003e namespace\nrefactor(langchain): stop exporting \u003ccode\u003eMCPAdapterTarget\u003c/code\u003e from \u003ccode\u003elangchain.mcp\u003c/code\u003e\nrefactor(langchain): rename \u003ccode\u003econvert_mcp_tool_to_langchain_tool\u003c/code\u003e to \u003ccode\u003eas_langchain_tool\u003c/code\u003e\nrefactor(langchain): rename \u003ccode\u003eMCPAdapter.get_tools\u003c/code\u003e to \u003ccode\u003elist_tools\u003c/code\u003e\nfeat(langchain): expose \u003ccode\u003ecache_mode\u003c/code\u003e on \u003ccode\u003eMCPAdapter.get_tools\u003c/code\u003e\nchore(langchain): require \u003ccode\u003efastmcp\u003c/code\u003e 4.0.0\nfeat(langchain): accept a \u003ccode\u003eClientGroup\u003c/code\u003e as an \u003ccode\u003eMCPAdapter\u003c/code\u003e target\nfeat(langchain): mark the \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace as beta\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/langchain-ai/langchain/commit/79cab2dc7f58be720cac43db3677b4c1fd971f91\"\u003e\u003ccode\u003e79cab2d\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1e6a4f0b45b60475f566f3ad49fb32ea99d22233\"\u003e\u003ccode\u003e1e6a4f0\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8330dfe987988c1bcbbc5e8d9af9a67e5a1c2744\"\u003e\u003ccode\u003e8330dfe\u003c/code\u003e\u003c/a\u003e docs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/280442b54c80db2175ced4a20ab59eab86a32dc1\"\u003e\u003ccode\u003e280442b\u003c/code\u003e\u003c/a\u003e feat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f5ee2b65f4cf2f1a9fe688bcae6ad2af966582bd\"\u003e\u003ccode\u003ef5ee2b6\u003c/code\u003e\u003c/a\u003e chore(chroma): bump Pygments security constraint (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40162\"\u003e#40162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/234255c1c7427b5ed6dc505abad41ddfa6c9ff8f\"\u003e\u003ccode\u003e234255c\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40009\"\u003e#40009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/79e0e4adbafc1fda1ca9956e184be8b8819aa7ab\"\u003e\u003ccode\u003e79e0e4a\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/langchain (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40149\"\u003e#40149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e90201b7af5cd32762744c974ca9ce3f27efc9d8\"\u003e\u003ccode\u003ee90201b\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4240248e7b08ed72e85ce0744350c33beddb0ac8\"\u003e\u003ccode\u003e4240248\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/text-splitters (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40148\"\u003e#40148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/530290a9d445069d80a68cdcd4d0da768f2aa2b0\"\u003e\u003ccode\u003e530290a\u003c/code\u003e\u003c/a\u003e chore(deps): bump uv to 0.12.8 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40092\"\u003e#40092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain==1.3.13...langchain==1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.4.9 to 1.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.3\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.2\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40407\"\u003e#40407\u003c/a\u003e)\nfeat(core): Allow model name and provider tracing metadata override based on gateway response (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40406\"\u003e#40406\u003c/a\u003e)\ntest(core): cover the deprecated \u003ccode\u003e.text()\u003c/code\u003e access path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40243\"\u003e#40243\u003c/a\u003e)\ndocs(core): remove stale Args/Raises entries from FileCallbackHandler._write and ChatGeneration.set_text (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40211\"\u003e#40211\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40209\"\u003e#40209\u003c/a\u003e)\nfeat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\nchore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\nchore(deps): bump tornado from 6.5.7 to 6.5.8 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40113\"\u003e#40113\u003c/a\u003e)\nfix(core): avoid mutation in google-genai standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40023\"\u003e#40023\u003c/a\u003e)\nfix(core): avoid mutation in bedrock converse standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40022\"\u003e#40022\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.0\u003c/p\u003e\n\u003cp\u003erevert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\nrelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\nfix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\nrelease(core): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39832\"\u003e#39832\u003c/a\u003e)\nfeat(core): propagate gateway information on error path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39829\"\u003e#39829\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\nfix(core): resolve postponed annotations in \u003ccode\u003eStructuredTool._injected_args_keys\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39602\"\u003e#39602\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\nfix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict mappings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39750\"\u003e#39750\u003c/a\u003e)\nfix(core): make subprocess and temporary file tests portable on Windows (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39664\"\u003e#39664\u003c/a\u003e)\nfix(core): fail fast when tool schemas can't resolve forward refs during serialization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39570\"\u003e#39570\u003c/a\u003e)\ntest(core): avoid version-dependent runnable snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39705\"\u003e#39705\u003c/a\u003e)\nfix(core): require all nested properties for strict tool schemas (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39306\"\u003e#39306\u003c/a\u003e)\nfix(core): remove stale sync-stream \u003ccode\u003exfail\u003c/code\u003e [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39720\"\u003e#39720\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39723\"\u003e#39723\u003c/a\u003e)\nperf(core): Lazily import transformers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38037\"\u003e#38037\u003c/a\u003e)\nfix(core): accept non-dict Mapping values in mustache templates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39680\"\u003e#39680\u003c/a\u003e)\ndocs(core): clarify \u003ccode\u003eRunnable\u003c/code\u003e pipe coercion [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39075\"\u003e#39075\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39707\"\u003e#39707\u003c/a\u003e)\nfix(core): finalize chain-group runs on \u003ccode\u003eBaseException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39699\"\u003e#39699\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.5\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/langchain-ai/langchain/commit/348c9dc572599947d2d7d33d6a5b8b936e92a1d4\"\u003e\u003ccode\u003e348c9dc\u003c/code\u003e\u003c/a\u003e release(core): 1.6.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40407\"\u003e#40407\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e0e1557bd6ebae13915c59d942ef2824b51a10c6\"\u003e\u003ccode\u003ee0e1557\u003c/code\u003e\u003c/a\u003e feat(core): Allow model name and provider tracing metadata override based on ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/67ee6cb63dd9ae7f3a4dfedc3095652bce15a125\"\u003e\u003ccode\u003e67ee6cb\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40399\"\u003e#40399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/d5d7cc56ab3932c9a10dc76b31cd5d4a778c3f2a\"\u003e\u003ccode\u003ed5d7cc5\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40387\"\u003e#40387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4436bd2b67814877a3797613de28882adcdb6edf\"\u003e\u003ccode\u003e4436bd2\u003c/code\u003e\u003c/a\u003e fix(anthropic): preserve invalid tool use blocks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40372\"\u003e#40372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/443154df9db5251d73730e1de3eb63bf352e586f\"\u003e\u003ccode\u003e443154d\u003c/code\u003e\u003c/a\u003e feat(huggingface): use torch.accelerator for device-agnostic device count det...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3539ca08d92e10b65b6f3117cfd657b16b05c865\"\u003e\u003ccode\u003e3539ca0\u003c/code\u003e\u003c/a\u003e fix(huggingface): remove retired IPEX backend (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39649\"\u003e#39649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/45d94fb0fa10bf8cab95dcb1e76c2bc39165535d\"\u003e\u003ccode\u003e45d94fb\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40358\"\u003e#40358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/60357692c76651a7cd6153496a24658fa355bdcc\"\u003e\u003ccode\u003e6035769\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40339\"\u003e#40339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a7b0f0ae50acebb527a25e153ff16621d37ba650\"\u003e\u003ccode\u003ea7b0f0a\u003c/code\u003e\u003c/a\u003e docs: update OpenWiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40318\"\u003e#40318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.9...langchain-core==1.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-openai` from 1.3.5 to 1.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-openai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-openai==1.6.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40339\"\u003e#40339\u003c/a\u003e)\nfix(openai): add GPT-6 Astra reasoning efforts (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40330\"\u003e#40330\u003c/a\u003e)\nchore(deps): bump httpx2 from 2.10.0 to 2.12.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40309\"\u003e#40309\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.6.0\u003c/p\u003e\n\u003cp\u003efix(openai): bump \u003ccode\u003emax_completion_tokens\u003c/code\u003e in cache breakpoint integration test (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40284\"\u003e#40284\u003c/a\u003e)\nrelease(openai): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40268\"\u003e#40268\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40217\"\u003e#40217\u003c/a\u003e)\nfix(openai): support Azure AD auth with OpenAI 3.8 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40190\"\u003e#40190\u003c/a\u003e)\nfeat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\nfeat(openai): support \u003ccode\u003econfiguration_update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40201\"\u003e#40201\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\nfix(openai): route \u003ccode\u003egpt-5.6-sol\u003c/code\u003e to responses API (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40133\"\u003e#40133\u003c/a\u003e)\nchore(openai): fix tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39972\"\u003e#39972\u003c/a\u003e)\nfix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39936\"\u003e#39936\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39954\"\u003e#39954\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.2\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(openai): raise clear error on unexpected response type in \u003ccode\u003e_create_chat_result\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39731\"\u003e#39731\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39719\"\u003e#39719\u003c/a\u003e)\nfix(openai): preserve reasoning item boundaries (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39278\"\u003e#39278\u003c/a\u003e)\nrelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\nrelease(openai): 1.5.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39653\"\u003e#39653\u003c/a\u003e)\nfix(openai): preserve streamed encrypted reasoning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39635\"\u003e#39635\u003c/a\u003e)\nchore(infra): support langsmith gateway in CI (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39651\"\u003e#39651\u003c/a\u003e)\nrelease(openai): 1.5.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39629\"\u003e#39629\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/60357692c76651a7cd6153496a24658fa355bdcc\"\u003e\u003ccode\u003e6035769\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40339\"\u003e#40339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a7b0f0ae50acebb527a25e153ff16621d37ba650\"\u003e\u003ccode\u003ea7b0f0a\u003c/code\u003e\u003c/a\u003e docs: update OpenWiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40318\"\u003e#40318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1611938f49dda48aa069d1fdce429430257488b7\"\u003e\u003ccode\u003e1611938\u003c/code\u003e\u003c/a\u003e fix(openai): add GPT-6 Astra reasoning efforts (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40330\"\u003e#40330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f092c9a78b3c532ef4c01935c0d4514209ff9f96\"\u003e\u003ccode\u003ef092c9a\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40317\"\u003e#40317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/22f3421aeedec55962f712a34d86d9683bf6cf59\"\u003e\u003ccode\u003e22f3421\u003c/code\u003e\u003c/a\u003e docs: update OpenWiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40218\"\u003e#40218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1c40140b3daf80c5baa7427d707ef2beb6c404b2\"\u003e\u003ccode\u003e1c40140\u003c/code\u003e\u003c/a\u003e chore(deps): bump httpx2 from 2.10.0 to 2.12.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40309\"\u003e#40309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/db613a96050bc6e594fdcd618af7532264dcceb8\"\u003e\u003ccode\u003edb613a9\u003c/code\u003e\u003c/a\u003e fix(openai): bump \u003ccode\u003emax_completion_tokens\u003c/code\u003e in cache breakpoint integration tes...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9f2eb7f46719742875ebea9e31d53e168e8b81a2\"\u003e\u003ccode\u003e9f2eb7f\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40268\"\u003e#40268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/765eb32901fa524e1428f94a9ee91b371a63ab62\"\u003e\u003ccode\u003e765eb32\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40277\"\u003e#40277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e670c7a03ba36fd1516f0185f7ec1186c89aa471\"\u003e\u003ccode\u003ee670c7a\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40258\"\u003e#40258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-openai==1.3.5...langchain-openai==1.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.9 to 1.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.11\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8533\"\u003e#8533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8532\"\u003e#8532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8502\"\u003e#8502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump cryptography from 48.0.1 to 50.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8528\"\u003e#8528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-sqlite): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8481\"\u003e#8481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8480\"\u003e#8480\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.10\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.9\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.10 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8462\"\u003e#8462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump jupyterlab from 4.5.9 to 4.5.10 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8440\"\u003e#8440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump setuptools from 80.9.0 to 83.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8435\"\u003e#8435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): type v3 stream_events return and native projections (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8389\"\u003e#8389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert(langgraph): delete TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8403\"\u003e#8403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): drop tags from TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8402\"\u003e#8402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8362\"\u003e#8362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump mistune from 3.2.1 to 3.3.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8317\"\u003e#8317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump soupsieve from 2.8.1 to 2.8.4 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8318\"\u003e#8318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(cli): allow langgraph-api versions up to 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8319\"\u003e#8319\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/644815f9e5bc52ad8f7a5227a456227e9c3e639b\"\u003e\u003ccode\u003e644815f\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7d6b5790ba84ce38c26f27a533d8419a31103c36\"\u003e\u003ccode\u003e7d6b579\u003c/code\u003e\u003c/a\u003e feat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d56666f7fbf0d380ad84cdf0cbe5aa48ab0cc086\"\u003e\u003ccode\u003ed56666f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 7 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/6a2822d3c77dad49a96718de73095f18717728be\"\u003e\u003ccode\u003e6a2822d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 5 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fde3068970679184b68d3d068a92c83c966a4888\"\u003e\u003ccode\u003efde3068\u003c/code\u003e\u003c/a\u003e release(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.9...1.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph-checkpoint` from 4.1.1 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph-checkpoint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph-checkpoint==4.2.0\u003c/h2\u003e\n\u003cp\u003eChanges since checkpoint==4.1.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8490\"\u003e#8490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(checkpoint,checkpoint-postgres): add opt-in omit_expired to skip expired rows on read (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8354\"\u003e#8354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8248\"\u003e#8248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8173\"\u003e#8173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: standardize package \u003ccode\u003eREADME.md\u003c/code\u003e structure (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8064\"\u003e#8064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: migrate Python type checking to ty (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8002\"\u003e#8002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the major group in /libs/checkpoint with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7967\"\u003e#7967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 3 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7960\"\u003e#7960\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f22af6248c93df08b553e9a264f6367797e0fddb\"\u003e\u003ccode\u003ef22af62\u003c/code\u003e\u003c/a\u003e chore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/658541c4960f329864a2523fc7d52427e8190bed\"\u003e\u003ccode\u003e658541c\u003c/code\u003e\u003c/a\u003e chore(checkpoint-postgres,checkpoint-sqlite): enable PLC0415 lint rule (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8540\"\u003e#8540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fb3d5f0399222504e015fe959e0e79fdc6e00a65\"\u003e\u003ccode\u003efb3d5f0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/01521c1b1cc4c035f64b9be40f2913285128f526\"\u003e\u003ccode\u003e01521c1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/cd62febcfae628d0930d1f7d3cb3b5919d4b800f\"\u003e\u003ccode\u003ecd62feb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 update...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/checkpoint==4.1.1...checkpoint==4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.11.0 to 5.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental \u003ccode\u003epyemscripten_2026_0_wasm32\u003c/code\u003e (Pyodide) build support added. \u003cem\u003eHowever, the resulting builds are flaky at runtime and subject to various types of random crashes. Freezes on shutdown have also been observed.\u003c/em\u003e\nWhile these issues persist, PyEmscripten wheels will not be uploaded to PyPI, but they are included in the release process and can be downloaded from GitHub on an experimental basis. If you can help track down and fix these issues, please reach out.\nNote: Our PyEmscripten wheels are bigger than usual, as they are built with debug symbols (a non-debug build is not considered useful at this stage).\u003c/li\u003e\n\u003cli\u003eFixed compatibility with Python 3.6 and 3.7.\n\u003cul\u003e\n\u003cli\u003eRuntime support was inadvertently broken due to a faulty cached property backport which held only one cache per class, not per instance as should have been.\nThe accidental loss of caches broke key assumptions of our autoclose logic, which relies on \u003ccode\u003ecached_property\u003c/code\u003e since 5.8.0. (Earlier versions that did not make extensive use of cached properties might work but have not been explicitly tested.)\u003c/li\u003e\n\u003cli\u003eThis release replaces both \u003ccode\u003efunctools.cached_property\u003c/code\u003e and the faulty \u003ccode\u003efunctools.lru_cache()\u003c/code\u003e based backport with our own, backward compatible \u003ccode\u003ecached_property\u003c/code\u003e implementation along with thorough documentation.\u003c/li\u003e\n\u003cli\u003eAlso, fixed setup (i.e. source installation) with Python 3.6 and its max available setup dependency versions (that is, \u003ccode\u003esetuptools\u003c/code\u003e 59). This had probably been broken for a long time. (A few non-breaking issues remain, e.g. for some reason we end up with a \u003ccode\u003epurelib\u003c/code\u003e directory, but it should be \u003ccode\u003eplatlib\u003c/code\u003e.)\u003c/li\u003e\n\u003cli\u003eBear in mind that ctypesgen continues to require Python \u003ccode\u003e\u0026gt;=3.8\u003c/code\u003e at this time (3.6 compat not being a priority in that case), but you can install with \u003ccode\u003e--no-build-isolation\u003c/code\u003e and let the reference bindings be used, or try adding ctypesgen's \u003ccode\u003esrc/\u003c/code\u003e to \u003ccode\u003ePYTHONPATH\u003c/code\u003e to bypass setup, and see how it goes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNote: We do not plan to (and practically cannot) keep up compatibility with outdated Python versions indefinitely.\u003c/strong\u003e In particular, setup compatibility may be dropped sooner or later in favor of contemporary Python packaging concepts, like migrating as much as possible to \u003ccode\u003epyproject.toml\u003c/code\u003e. That said, we are happy to restore compatibility at this point, and fix any \u003cem\u003eunintentional\u003c/em\u003e breakage.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eMANIFEST.in\u003c/code\u003e missing Windows spoof headers, which resulted in subtly incorrect bindings when installing from an sdist on Windows, as seen in test failures. (Release wheels have been unaffected and passed the test suite, so this issue went unnoticed for a while.)\u003c/li\u003e\n\u003cli\u003eBumped \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.1\u003c/code\u003e to \u003ccode\u003e2407.3\u003c/code\u003e. Made its setup python 3.6 compatible likewise (wheels should have worked before now). Changed versioning and release process so that CI no longer needs to push to the repository (may eventually become a blueprint for pypdfium2 itself). More documentation added, including \u003ccode\u003emanylinux2014\u003c/code\u003e POC.\u003c/li\u003e\n\u003cli\u003eInternal improvements (non-exhaustive):\n\u003cul\u003e\n\u003cli\u003eProperly clean up \u003ccode\u003e*.egg-info/\u003c/code\u003e and \u003ccode\u003ebuild/\u003c/code\u003e before packaging, to avoid mad file inclusion bugs (ran into this while working on setup include rules).\u003c/li\u003e\n\u003cli\u003eMigrated from requirements files to PEP 735 dependency groups (\u003ccode\u003epyproject.toml\u003c/code\u003e).\nRecent enough \u003ccode\u003epip\u003c/code\u003e should be available to Python \u0026gt;= 3.9. For compatibility with older versions, feel free to use \u003ccode\u003e./utils/misc/install_dep_group.py\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eApplied dependency cooldowns to internal callers of \u003ccode\u003epip install\u003c/code\u003e. Always use virtual environments in CI. Use lockfiles in sensitive areas (e.g. publish jobs).\u003c/li\u003e\n\u003cli\u003eRearranged \u0026amp; improved utilities. Cleaner distinction between \u003ccode\u003esetupsrc/\u003c/code\u003e and \u003ccode\u003eutils/\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eWork around persistent i686 container network issues by downgrading host runner to \u003ccode\u003eubuntu-24.04\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eLet \u003ccode\u003esetupsrc/\u003c/code\u003e share code from \u003ccode\u003esrc/\u003c/code\u003e through a \u003ccode\u003epypdfium2_cfg._shared\u003c/code\u003e submodule that can be added to \u003ccode\u003esys.path\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[manylinux_mipsle]\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\u003cblockquote\u003e\n\u003cp\u003e[!CAUTION]\nThe following builds are affected by known, major issues (e.g. endianness bugs, crashes, freezes) and are \u003cstrong\u003eNOT\u003c/strong\u003e considered ready for production use:\n\u003ccode\u003e[manylinux_s390x, musllinux_s390x, pyodide_wasm32]\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eCommit logs\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eCommits between \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.12.1\"\u003e\u003ccode\u003e5.12.1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.13.0\"\u003e\u003ccode\u003e5.13.0\u003c/code\u003e\u003c/a\u003e (latest commit first):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea4659102\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de35\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367a\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e78\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce0\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd619\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\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/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea465910\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de3\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e7\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd61\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3282e36375fd6e139f885ff634747ab0fe643e66\"\u003e\u003ccode\u003e3282e36\u003c/code\u003e\u003c/a\u003e Add zizmor to check step\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/07b84aaaa9c4c44429e0316c15c179b64c004d0a\"\u003e\u003ccode\u003e07b84aa\u003c/code\u003e\u003c/a\u003e Progress changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/6ec38d2aa64d59f02892ddf07f601bbdb5bbf53e\"\u003e\u003ccode\u003e6ec38d2\u003c/code\u003e\u003c/a\u003e git_net_additions: further improve fallback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b5cdd7c7fcd2c01cd7744b6824f977bbbcb831c6\"\u003e\u003ccode\u003eb5cdd7c\u003c/code\u003e\u003c/a\u003e git_net_additions: fancier fallback for binary files\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.11.0...5.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.4 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.5 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.5\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix numpy deprecations by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/505\"\u003educkdb/duckdb-python#505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix alias of \u003ccode\u003eDuckDBPyRelation.query\u003c/code\u003e (closes \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/468\"\u003e#468\u003c/a\u003e) by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/524\"\u003educkdb/duckdb-python#524\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/duckdb/duckdb-python/commit/b236c8194ed14c7a7c685e0534dde501cc855b3a\"\u003e\u003ccode\u003eb236c81\u003c/code\u003e\u003c/a\u003e Pin submodule to release hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/e6a21c5b5d65d741fafd5a7389c93b8b86a7f249\"\u003e\u003ccode\u003ee6a21c5\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/f637bf42683030cbb108268581b866f13cb75031\"\u003e\u003ccode\u003ef637bf4\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/4c5c73c63381bd0587fd42b41093c8f0abe9f17c\"\u003e\u003ccode\u003e4c5c73c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6fae28061912de88c3c0f6e6ad6b2f3fc5ee5235\"\u003e\u003ccode\u003e6fae280\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/d8d5f0a36003c9090ea9480cdefa8f4b4122fece\"\u003e\u003ccode\u003ed8d5f0a\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5d85f06025e83e3d2c69813acf4b2dc02bebc415\"\u003e\u003ccode\u003e5d85f06\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c3cbf8d9ca87cea3dfbb89bfa2102ff4ec530f00\"\u003e\u003ccode\u003ec3cbf8d\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/93418b65c6ca821d71d9a091fb5218ad55d8a4eb\"\u003e\u003ccode\u003e93418b6\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/24f1915b590e1e663a14c0bff9e49bf28ebece9b\"\u003e\u003ccode\u003e24f1915\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.4...v1.5.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.9.0 to 1.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains a few bug fixes and is the first version supporting Python 3.15.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\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/scikit-learn/scikit-learn/commit/866c0f51e7560ef0303cbcc5f159df5382ea9e3f\"\u003e\u003ccode\u003e866c0f5\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/12f135fbffe3b3e7e294e4ef16f0b59f68e6a6b9\"\u003e\u003ccode\u003e12f135f\u003c/code\u003e\u003c/a\u003e update upper bounds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/43ff2f20bc5bfbe92b9cd3ec9d86214da8ee2c6e\"\u003e\u003ccode\u003e43ff2f2\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b8515241202663142b65dbe92294e96a6dc5def2\"\u003e\u003ccode\u003eb851524\u003c/code\u003e\u003c/a\u003e DOC Mark dev index as orphan (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34916\"\u003e#34916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/01d56d48da18e7b365c4d2ebcd5d1fddaa24dd12\"\u003e\u003ccode\u003e01d56d4\u003c/code\u003e\u003c/a\u003e DOC Fix wikipedia principal eigenvector example references (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34915\"\u003e#34915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b86a1e227c2c424b17f8872d4094bbbc061e32c9\"\u003e\u003ccode\u003eb86a1e2\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d282698440cec541f2427794b8c205fb4b1420be\"\u003e\u003ccode\u003ed282698\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34897\"\u003e#34897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/eb34279083fe9297d141efddceaf38c596a49766\"\u003e\u003ccode\u003eeb34279\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/7581303c447a0daa07fa74ba8104e327c11f1dc5\"\u003e\u003ccode\u003e7581303\u003c/code\u003e\u003c/a\u003e FIX: Fix \u003ccode\u003eQuantileTransformer(ignore_implicit_zeros=True)\u003c/code\u003e sub-sampling behav...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ac47f4de75eacad880b77db09aa1f677f6038274\"\u003e\u003ccode\u003eac47f4d\u003c/code\u003e\u003c/a\u003e FIX: avoid EfficiencyWarning in OPTICS with metric='precomputed' (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34692\"\u003e#34692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.9.0...1.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.5.3 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.6.0 - 2026/08/31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix caching of functions whose source cannot be retrieved, such as functions\ndefined in a notebook cell. Their identity fell back to\n\u003ccode\u003estr(hash(func.__code__))\u003c/code\u003e, which is salted by \u003ccode\u003ePYTHONHASHSEED\u003c/code\u003e and so\ndiffered between processes. A worker reading the \u003ccode\u003efunc_code.py\u003c/code\u003e written by\nanother one concluded that the function had changed and wiped the whole\ncache directory for it, discarding results computed by its peers.\n\u003ccode\u003efunc_code.py\u003c/code\u003e is also no longer rewritten in place, so a reader can no\nlonger catch it half-written and draw the same conclusion.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1694\"\u003ejoblib/joblib#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop python 3.9 support. The oldest supported Python version\nis now Python 3.10.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1773\"\u003ejoblib/joblib#1773\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eeval_expr\u003c/code\u003e (used to evaluate the \u003ccode\u003epre_dispatch\u003c/code\u003e argument of\n\u003ccode\u003eParallel\u003c/code\u003e) to raise a \u003ccode\u003eValueError\u003c/code\u003e as documented instead of leaking a\n\u003ccode\u003eZeroDivisionError\u003c/code\u003e for expressions that divide or take a modulo by zero.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1810\"\u003ejoblib/joblib#1810\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMemorizedResult\u003c/code\u003e now forwards \u003ccode\u003emmap_mode\u003c/code\u003e to its store backend, so a\ncached array reconstructed from a location is memory-mapped as requested\ninstead of being loaded fully into memory.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1799\"\u003ejoblib/joblib#1799\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnvendor cloudpickle to more quickly benefit from maintenance releases\nof cloudpickle\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1775\"\u003ejoblib/joblib#1775\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMemory.cache\u003c/code\u003e for functions with a keyword-only argument that has a\ndefault declared before a keyword-only argument without a default.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1731\"\u003ejoblib/joblib#1731\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behavior of \u003ccode\u003efilter_args\u003c/code\u003e on some precise cases.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1800\"\u003ejoblib/joblib#1800\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a concurrency error that could happen with unordered generator.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1789\"\u003ejoblib/joblib#1789\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003edump()\u003c/code\u003e now accepts any input \u003ccode\u003eos.PathLike\u003c/code\u003e object to be consistent with\n\u003ccode\u003eload\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1812\"\u003ejoblib/joblib#1812\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe documentation now uses pydata sphinx theme. Furthermore, optional dependencies\n\u003ccode\u003etest\u003c/code\u003e and \u003ccode\u003edocs\u003c/code\u003e have been added to \u003ccode\u003epyproject.toml\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1774\"\u003ejoblib/joblib#1774\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky 3.6.0\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/joblib/joblib/commit/cd9a6b05fc4f2b1c8202eb62c4e863484f8cc099\"\u003e\u003ccode\u003ecd9a6b0\u003c/code\u003e\u003c/a\u003e Release 1.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1844\"\u003e#1844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/d873f972949d78166af6c945667c53f04d41fed6\"\u003e\u003ccode\u003ed873f97\u003c/code\u003e\u003c/a\u003e MNT vendor loky 3.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4ff61afd0849f18fddf5fbd137c1f02bfaed5223\"\u003e\u003ccode\u003e4ff61af\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/804f4725e1a27b1425c8aabcf7312ceb11c3a07d\"\u003e\u003ccode\u003e804f472\u003c/code\u003e\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/Vatsa1374/Vibe-trading-/pull/26","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vatsa1374%2FVibe-trading-/issues/26","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/26/packages"},{"uuid":"5432355814","node_id":"PR_kwDOSVkxv88AAAABDPdmrg","number":10,"state":"open","title":"chore(deps): bump the python-deps group with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T09:04:01.000Z","updated_at":"2026-09-12T10:16:06.096Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-deps","update_count":18,"packages":[{"name":"scipy","old_version":"1.16.0","new_version":"1.17.1","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.7.2","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"cvxpy","old_version":"1.7.5","new_version":"1.9.2","repository_url":"https://github.com/cvxpy/cvxpy"},{"name":"numba","old_version":"0.63.1","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"baostock","old_version":"0.9.1","new_version":"0.9.3"},{"name":"akshare","old_version":"1.18.59","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"sqlalchemy","old_version":"2.0.36","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"lightgbm","old_version":"4.5.0","new_version":"4.7.0","repository_url":"https://github.com/lightgbm-org/LightGBM"},{"name":"shap","old_version":"0.46.0","new_version":"0.51.0","repository_url":"https://github.com/shap/shap"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 18 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [scipy](https://github.com/scipy/scipy) | `1.16.0` | `1.17.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.2` | `1.9.0` |\n| [cvxpy](https://github.com/cvxpy/cvxpy) | `1.7.5` | `1.9.2` |\n| [numba](https://github.com/numba/numba) | `0.63.1` | `0.67.0` |\n| [baostock](http://www.baostock.com) | `0.9.1` | `0.9.3` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.59` | `1.18.94` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.36` | `2.0.52` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.11.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.32` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [lightgbm](https://github.com/lightgbm-org/LightGBM) | `4.5.0` | `4.7.0` |\n| [shap](https://github.com/shap/shap) | `0.46.0` | `0.51.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.3` |\n\nUpdates `scipy` from 1.16.0 to 1.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.17.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.17.1\u003c/code\u003e is a bug-fix release with no new features compared to \u003ccode\u003e1.17.0\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eAuthors\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eName (commits)\u003c/li\u003e\n\u003cli\u003eEvgeni Burovski (5)\u003c/li\u003e\n\u003cli\u003eLucas Colley (1)\u003c/li\u003e\n\u003cli\u003eChristoph Gohlke (1)\u003c/li\u003e\n\u003cli\u003eRalf Gommers (6)\u003c/li\u003e\n\u003cli\u003eMatt Haberland (5)\u003c/li\u003e\n\u003cli\u003eMatthias Koeppe (1)\u003c/li\u003e\n\u003cli\u003eNick ODell (1)\u003c/li\u003e\n\u003cli\u003eIlhan Polat (10)\u003c/li\u003e\n\u003cli\u003eTyler Reddy (44)\u003c/li\u003e\n\u003cli\u003eMartin Schuck (3)\u003c/li\u003e\n\u003cli\u003eDan Schult (3)\u003c/li\u003e\n\u003cli\u003estratakis (1) +\u003c/li\u003e\n\u003cli\u003eਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA total of 13 people contributed to this release.\nPeople with a \u0026quot;+\u0026quot; by their names contributed a patch for the first time.\nThis list of names is automatically generated, and may not be fully complete.\u003c/p\u003e\n\u003cp\u003eComplete issue list, PR list, and release asset hashes are available in the associated \u003ca href=\"https://github.com/scipy/scipy/releases/download/v1.17.1/README.txt\"\u003e\u003ccode\u003eREADME.txt\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch1\u003eSciPy 1.17.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.17.0\u003c/code\u003e is the culmination of 6 months of hard work. It contains\nmany new features, numerous bug-fixes, improved test coverage and better\ndocumentation. There have been a number of deprecations and API changes\nin this release, which are documented below. All users are encouraged to\nupgrade to this release, as there are a large number of bug-fixes and\noptimizations. Before upgrading, we recommend that users check that\ntheir own code does not use deprecated SciPy functionality (to do so,\nrun your code with \u003ccode\u003epython -Wd\u003c/code\u003e and check for \u003ccode\u003eDeprecationWarning\u003c/code\u003e s).\nOur development attention will now shift to bug-fix releases on the\n\u003ccode\u003e1.17.x\u003c/code\u003e branch, and on adding new features on the main branch.\u003c/p\u003e\n\u003cp\u003eThis release requires Python \u003ccode\u003e3.11\u003c/code\u003e-\u003ccode\u003e3.14\u003c/code\u003e and NumPy \u003ccode\u003e1.26.4\u003c/code\u003e or greater.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eMany SciPy functions have gained native support for batching of N-dimensional\narray input and additional support for the array API standard. An overall\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/scipy/scipy/commit/527eb7fd7953a1de068f94bf8b322f249b9405ae\"\u003e\u003ccode\u003e527eb7f\u003c/code\u003e\u003c/a\u003e REL: 1.17.1 release commit [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/f11663bf044f1cb5a0112a28ac238f902ae36eea\"\u003e\u003ccode\u003ef11663b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/24584\"\u003e#24584\u003c/a\u003e from tylerjereddy/treddy_prep_1.17.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/2c49e68b634d2657380ca7b65207c6122e83cb72\"\u003e\u003ccode\u003e2c49e68\u003c/code\u003e\u003c/a\u003e DOC: PR 24584 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/400fa15ed6f9fece4c3848e9eade0e7d5e5aece0\"\u003e\u003ccode\u003e400fa15\u003c/code\u003e\u003c/a\u003e safely convert index dtypes to intc for csgraph and superLU\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/8c704044ab6f8f3e94295f354dbadfcab9139837\"\u003e\u003ccode\u003e8c70404\u003c/code\u003e\u003c/a\u003e MAINT: PR 24584 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/6dda8c13c534a61bc56c7b11bb5841efbd37d9dd\"\u003e\u003ccode\u003e6dda8c1\u003c/code\u003e\u003c/a\u003e BUG: PR 24584 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/4a187e59ea9cde1f79b4fae9dbd8177adcf0ddf3\"\u003e\u003ccode\u003e4a187e5\u003c/code\u003e\u003c/a\u003e DOC: PR 24584 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/463ee9f72a5f1afe3363e86344a55eea1c1ba477\"\u003e\u003ccode\u003e463ee9f\u003c/code\u003e\u003c/a\u003e ENH: linalg/inv: re-enable overwrite_a for 2D inputs (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/24442\"\u003e#24442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/df746eed5eae0243969fd8de07770c4ace1dc65c\"\u003e\u003ccode\u003edf746ee\u003c/code\u003e\u003c/a\u003e BUG: linalg: restore dtypes in inv, solve, det\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/246bfeecbe56200ae4e265a70e06ccc64daee9c2\"\u003e\u003ccode\u003e246bfee\u003c/code\u003e\u003c/a\u003e MAINT:optimize: Enable multi-phase init to DIRECT\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy/compare/v1.16.0...v1.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.7.2 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/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release adds \u003ca href=\"https://narwhals-dev.github.io/narwhals/\"\u003enarwhals\u003c/a\u003e as a new dependency that will help to improve dataframe interoperability across the project.\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eRelease 1.8.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.8.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_8_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_8_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.8.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.8.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14 and features support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/77def0ed6e3beab57244885d2a584470e96c103d\"\u003e\u003ccode\u003e77def0e\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ee7c0b0e34ffe0f5eff8c7aeda49783f70bd9faa\"\u003e\u003ccode\u003eee7c0b0\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/3d7fb048fc5f05555a202d2b24307628841904b5\"\u003e\u003ccode\u003e3d7fb04\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8954e7baf1f827320b17817f0ab76d025f5e6421\"\u003e\u003ccode\u003e8954e7b\u003c/code\u003e\u003c/a\u003e DOC Release highlights for 1.9 (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34147\"\u003e#34147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73a3eab9d7bc58b695e4da8765044815b90b8dee\"\u003e\u003ccode\u003e73a3eab\u003c/code\u003e\u003c/a\u003e Fix: Array-API - avoid failing for numpy fit + predict with sparse or array-l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8839aaeb2fa2a4e3ad2f0a5a69b5f427cffe1dd1\"\u003e\u003ccode\u003e8839aae\u003c/code\u003e\u003c/a\u003e DOC Thread-safety requirement for open_listener message consumer callback (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/4d2476a4e2acc9429b96d8ee80218a96d24c2bde\"\u003e\u003ccode\u003e4d2476a\u003c/code\u003e\u003c/a\u003e DOC Refactor array API docs page (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34054\"\u003e#34054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f9f812fe6a4ea54c482da6b195773917b636365e\"\u003e\u003ccode\u003ef9f812f\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d779dc335a31d74ef472003d9012066f07ee8834\"\u003e\u003ccode\u003ed779dc3\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/6a03cf0906987ce77b37e780ccdebbe3f85e9235\"\u003e\u003ccode\u003e6a03cf0\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.7.2...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cvxpy` from 1.7.5 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cvxpy/cvxpy/releases\"\u003ecvxpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCVXPY 1.9.2\u003c/h1\u003e\n\u003cp\u003eThis patch release contains bug fixes and follow-up improvements for CVXPY 1.9.\u003c/p\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis new release totaled 34 PRs from 7 contributors.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ghackebeil\"\u003e\u003ccode\u003e@​ghackebeil\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3363\"\u003e#3363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/govindchari\"\u003e\u003ccode\u003e@​govindchari\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3411\"\u003e#3411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Iroy30\"\u003e\u003ccode\u003e@​Iroy30\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3351\"\u003e#3351\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3364\"\u003e#3364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrathamDesai07\"\u003e\u003ccode\u003e@​PrathamDesai07\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3409\"\u003e#3409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PTNobel\"\u003e\u003ccode\u003e@​PTNobel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3349\"\u003e#3349\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3352\"\u003e#3352\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3355\"\u003e#3355\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3356\"\u003e#3356\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3357\"\u003e#3357\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3358\"\u003e#3358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3370\"\u003e#3370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3388\"\u003e#3388\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3392\"\u003e#3392\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3394\"\u003e#3394\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3396\"\u003e#3396\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3397\"\u003e#3397\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3399\"\u003e#3399\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3401\"\u003e#3401\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3405\"\u003e#3405\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3406\"\u003e#3406\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3407\"\u003e#3407\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3412\"\u003e#3412\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3413\"\u003e#3413\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3414\"\u003e#3414\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3421\"\u003e#3421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SteveDiamond\"\u003e\u003ccode\u003e@​SteveDiamond\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3376\"\u003e#3376\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3377\"\u003e#3377\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3379\"\u003e#3379\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3380\"\u003e#3380\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3381\"\u003e#3381\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3382\"\u003e#3382\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/WilliamZhang20\"\u003e\u003ccode\u003e@​WilliamZhang20\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3360\"\u003e#3360\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3415\"\u003e#3415\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eCVXPY 1.9.1\u003c/h1\u003e\n\u003cp\u003eThis patch release contains bug fixes and follow-up improvements for CVXPY 1.9.\u003c/p\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis new release totaled 8 PRs from 3 contributors.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brunoficoxpress\"\u003e\u003ccode\u003e@​brunoficoxpress\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3334\"\u003e#3334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PTNobel\"\u003e\u003ccode\u003e@​PTNobel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3332\"\u003e#3332\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3335\"\u003e#3335\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3338\"\u003e#3338\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3340\"\u003e#3340\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3341\"\u003e#3341\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3345\"\u003e#3345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/terryweng03\"\u003e\u003ccode\u003e@​terryweng03\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3336\"\u003e#3336\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCVXPY 1.9.0\u003c/h2\u003e\n\u003ch1\u003eCVXPY 1.9\u003c/h1\u003e\n\u003cp\u003eThis release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements.\u003c/p\u003e\n\u003cp\u003eThis version of CVXPY supports Python 3.11 through 3.14. We will support CVXPY 1.9 with bugfixes while developing the 1.10 release. CVXPY 1.8 and older are no longer supported.\u003c/p\u003e\n\u003ch2\u003eDisciplined Nonlinear Programming (DNLP)\u003c/h2\u003e\n\u003cp\u003eThis release introduces \u003cem\u003eDisciplined Nonlinear Programming\u003c/em\u003e (DNLP), a ruleset that extends CVXPY beyond convex optimization to a broad class of nonlinear problems. DNLP canonicalizes nonsmooth functions in the same way as DCP, but allows for general smooth functions to be used otherwise.\u003c/p\u003e\n\u003cp\u003eTo use DNLP, pass \u003ccode\u003enlp=True\u003c/code\u003e to \u003ccode\u003eproblem.solve(...)\u003c/code\u003e. Supported NLP solvers include \u003cstrong\u003eIPOPT\u003c/strong\u003e, \u003cstrong\u003eKNITRO\u003c/strong\u003e, \u003cstrong\u003eUNO\u003c/strong\u003e, and \u003cstrong\u003eCOPT\u003c/strong\u003e. See the DNLP tutorial for more details and examples.\u003c/p\u003e\n\u003ch2\u003eVariable bounds\u003c/h2\u003e\n\u003cp\u003eVariable bounds can now be specified with expressions involving parameters, and also support sparse bound arrays (when the variable itself is sparse). Many solvers now natively use variable bounds when they are provided.\u003c/p\u003e\n\u003ch2\u003eDPP for parametric quadratic objectives\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003equad_form(x, P)\u003c/code\u003e with a parametric PSD matrix \u003ccode\u003eP\u003c/code\u003e is now DPP-compliant on solvers that natively support quadratic objectives, allowing efficient re-solves when only \u003ccode\u003eP\u003c/code\u003e's value changes.\u003c/p\u003e\n\u003ch2\u003eNew features\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/cvxpy/cvxpy/commit/7cb26d3ec6269234cf275b3b92ca5443628e24c1\"\u003e\u003ccode\u003e7cb26d3\u003c/code\u003e\u003c/a\u003e Release v1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/bcad203bdda05c2822861fd241d605ec90845d4d\"\u003e\u003ccode\u003ebcad203\u003c/code\u003e\u003c/a\u003e Patch/1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/fac9f6fa89bef7b0aa5f174a0bdf2bd10a9193e2\"\u003e\u003ccode\u003efac9f6f\u003c/code\u003e\u003c/a\u003e CI: install Moreau from PyPI instead of private Fury index\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/a89e5cf9055b15b2d917cd3830ad1986968e79af\"\u003e\u003ccode\u003ea89e5cf\u003c/code\u003e\u003c/a\u003e Fix N-D parametric matmul in the COO and SCIPY canonicalization backends (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3401\"\u003e#3401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/c6ac6c75f280720f4286e1c826cbeb98f6230ff7\"\u003e\u003ccode\u003ec6ac6c7\u003c/code\u003e\u003c/a\u003e Add missing numpy_numeric decorator to entr.numeric (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3379\"\u003e#3379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/6ba794a25e95500cc801fe222172ef2212232fe5\"\u003e\u003ccode\u003e6ba794a\u003c/code\u003e\u003c/a\u003e Fix scrambled ExpCone duals for matrix-shaped arguments (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/eeddbb77932696abed4d5af1aa0f8474341ed5da\"\u003e\u003ccode\u003eeeddbb7\u003c/code\u003e\u003c/a\u003e fix cone head lb (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/20ae79d57fa0889bdf6f7b3aad38b35d53dcdd5e\"\u003e\u003ccode\u003e20ae79d\u003c/code\u003e\u003c/a\u003e Dedup identical subtrees in Dcp2Cone canonicalization (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3355\"\u003e#3355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/eeb13c3ad3bc2c0c050ec0ab2e650a7a22429a54\"\u003e\u003ccode\u003eeeb13c3\u003c/code\u003e\u003c/a\u003e Updates to the wishlist (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/951e8b8365610b580ee6fb7816ab5b6b1ce210c4\"\u003e\u003ccode\u003e951e8b8\u003c/code\u003e\u003c/a\u003e Fix factor-2 error in Hermitian PSD constraint dual recovery (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3388\"\u003e#3388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cvxpy/cvxpy/compare/v1.7.5...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numba` from 0.63.1 to 0.67.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numba/numba/releases\"\u003enumba's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.67.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release, adding NumPy 2.5 support. Please view the release notes here:\n\u003ca href=\"https://numba.readthedocs.io/en/0.67.0/release/0.67.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/0.67.0/release/0.67.0-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.66.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release. Numba now upgrades to llvmlite 0.48 with LLVM 22. For detailed release notes, please refer: \u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.66.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.66.0-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.65.1\u003c/h2\u003e\n\u003cp\u003eNumba patch release, please refer to the detailed release notes here -\n\u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.65.1-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.65.1-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.65.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release, adding support for free-threading build. Please view the full release notes here:\n\u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.65.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.65.0-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.64.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release, adding NumPy 2.4 support. Please view the release notes here:\n\u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.64.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.64.0-notes.html\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/numba/numba/commit/3190b91b3dccd797c3382aaf7988ff8eb3079f79\"\u003e\u003ccode\u003e3190b91\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10772\"\u003e#10772\u003c/a\u003e from swap357/release0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/f68f603f3f0cd548449b1f79e1caa97a22bd6cef\"\u003e\u003ccode\u003ef68f603\u003c/code\u003e\u003c/a\u003e add current pr on 0.67 pr list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/86a975cab7780a411b11c4d3c663fba61185965a\"\u003e\u003ccode\u003e86a975c\u003c/code\u003e\u003c/a\u003e update final release date for 0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/c7f14cfb5ac9343e5069bef84d0f00c1b563a1dd\"\u003e\u003ccode\u003ec7f14cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10726\"\u003e#10726\u003c/a\u003e from swap357/pin_deps_0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/123fa28412ecc822ff8c289b8f9a08fe3137c57e\"\u003e\u003ccode\u003e123fa28\u003c/code\u003e\u003c/a\u003e update test refs and pin dependencies for release0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/0c893302def55ccd88f01d861053e51419bf587e\"\u003e\u003ccode\u003e0c89330\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10724\"\u003e#10724\u003c/a\u003e from swap357/changelog_0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/ffaa0174c8ebce7415b5c54ad6b32c19dbb050b5\"\u003e\u003ccode\u003effaa017\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10723\"\u003e#10723\u003c/a\u003e from swap357/update_version_support_table_0.67.0rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/af0d8790a4704f6f8a7a92648ff279c23b08dd0d\"\u003e\u003ccode\u003eaf0d879\u003c/code\u003e\u003c/a\u003e fix wrapping on release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/a5e4654b59bd5cc5ac09aeb819fea402f5821a35\"\u003e\u003ccode\u003ea5e4654\u003c/code\u003e\u003c/a\u003e Update docs/source/release/0.67.0-notes.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/e85720ed6063487bb2af94be50bb030a0d181732\"\u003e\u003ccode\u003ee85720e\u003c/code\u003e\u003c/a\u003e Update docs/source/release/0.67.0-notes.rst\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numba/numba/compare/0.63.1...0.67.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `baostock` from 0.9.1 to 0.9.3\n\nUpdates `akshare` from 1.18.59 to 1.18.94\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/akfamily/akshare/blob/main/docs/changelog.md\"\u003eakshare's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.18.94 fix: fix fund_money_fund_info_em interface\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 优化 stock_board_concept_hist_em 接口的空数据兜底逻辑：仅对合法空历史返回空 DataFrame，对无效概念板块名称或 BK 代码抛出明确异常\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.93 fix: fix fund_money_fund_info_em interface\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复 fund_money_fund_info_em 接口\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.92 fix: improve Xueqiu login requirement guidance\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 优化 stock_individual_basic_info_xq 系列接口在雪球返回 400016 时的提示信息，明确匿名访问当前受限且需要通过 `token=` 传入有效 `xq_a_token`\n2. 补充中概股、美股、港股雪球公司信息接口的登录态依赖说明\n3. 修复 fund_money_fund_info_em 接口因东方财富历史净值返回体新增字段而触发 Length mismatch 的问题\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.91 docs: migrate the Markdown parser to myst-parser\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 文档 Markdown 解析器由 recommonmark 迁移至 myst-parser，并移除随之无用的 sphinx-markdown-tables 与 markdown 依赖\n2. 修正 docs 目录下 25 个文件的标题层级，使每个页面具备唯一的一级标题且不再跳级\n3. 接口条目层级调整后可生成锚点，文档站中每个接口均支持直接链接定位\n4. 为 dependabot 增加依赖分组配置，避免多个拉取请求同时修改同一文件\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.90 build: declare \u003cstrong\u003eall\u003c/strong\u003e and drop the akqmt integration\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 为 akshare 声明 __all__，由 scripts/build_registry.py 生成并纳入 CI 校验\n2. 修复 from akshare import * 会额外导出 39 个子模块名的问题\n3. 移除 akqmt 集成及 full、qmt 两个附加依赖组\n4. 修正 README 中的 Python 版本要求、失效的仓库条幅与错误的代码风格条幅\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.89 build: raise the minimum supported Python version to 3.11\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 将 requires-python 提升至 3.11 以上，并同步 classifiers、CI 测试矩阵与 ruff target-version\n2. 修复 uv.lock 中为 Python 3.9 保留的旧版本解析分支所引发的 24 条依赖安全告警\n3. 新增 dependabot 配置，自动跟进 uv 与 GitHub Actions 的依赖更新\n4. 同步更新文档中关于 Python 最低版本的说明\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.88 fix: fix fund_portfolio_hold_em interface\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复 fund_portfolio_hold_em 接口\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.87 fix: fix interface docs\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复接口文档中接口半角符号问题\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.86 fix: fix interface docs\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复接口文档中接口半角符号问题\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.85 feat: add interface registry search API\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 新增 ak.search 接口检索功能，支持按接口名精确定位与关键词模糊检索\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- 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/akfamily/akshare/commit/0e7db00cb98ac6709e2b553efb5a79629aca7a72\"\u003e\u003ccode\u003e0e7db00\u003c/code\u003e\u003c/a\u003e fix(stock_board_concept_hist_em): 优化错误处理与空数据兜底逻辑 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7406\"\u003e#7406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/e7d3e24e9128c7f32ece4142cd1f1bf1bfc86bd7\"\u003e\u003ccode\u003ee7d3e24\u003c/code\u003e\u003c/a\u003e fix(fund): 修复fund_money_fund_info_em接口字段不匹配问题 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7405\"\u003e#7405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/1b9aeb53c8c137e9b1a3a94d1427e8fa3174e32d\"\u003e\u003ccode\u003e1b9aeb5\u003c/code\u003e\u003c/a\u003e ci: bump astral-sh/setup-uv from 9.0.0 to 10.0.1 in the actions group (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7399\"\u003e#7399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/ea5b388f24a025bd20c6eaa12fff3325f975daab\"\u003e\u003ccode\u003eea5b388\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump ruff from 0.16.2 to 0.16.3 in the python group (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7400\"\u003e#7400\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/8623219ee91a4c4ed8ffa983cdc0f5bb7db7a264\"\u003e\u003ccode\u003e8623219\u003c/code\u003e\u003c/a\u003e fix(stock): 更新雪球token并完善接口登录态说明 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7398\"\u003e#7398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/1248fdd05a2dda92937d4cd39c0957825f2f7f6e\"\u003e\u003ccode\u003e1248fdd\u003c/code\u003e\u003c/a\u003e ci: bump the actions group with 3 updates (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7394\"\u003e#7394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/e7912a6e4c11cb79b2d4b0ba9861e52b6ae58823\"\u003e\u003ccode\u003ee7912a6\u003c/code\u003e\u003c/a\u003e build(deps): bump the python group with 3 updates (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7395\"\u003e#7395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/8bfe862bb69364ae40646618ca9f54b19593ff3f\"\u003e\u003ccode\u003e8bfe862\u003c/code\u003e\u003c/a\u003e docs: 发布1.18.91版本，优化文档解析器与结构 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7393\"\u003e#7393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/761437923331c02708e1a58cc41c93dd7ff46917\"\u003e\u003ccode\u003e7614379\u003c/code\u003e\u003c/a\u003e Dev (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7386\"\u003e#7386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/02f358a520e4fb1cae72ed70bb2e18ba61738800\"\u003e\u003ccode\u003e02f358a\u003c/code\u003e\u003c/a\u003e fix(interface): 修复 fund_portfolio_hold_em 接口 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7383\"\u003e#7383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/akfamily/akshare/compare/release-v1.18.59...release-v1.18.94\"\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.36 to 2.0.52\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.0.52\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2026\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Python 3.15 support has been added and tested, including minimal changes\nfor full compatibility.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13477\"\u003e#13477\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a result-column misalignment bug in ORM-enabled UPDATE statements\nwhere \u003ccode\u003esynchronize_session=\u0026quot;fetch\u0026quot;\u003c/code\u003e is in use, either explicitly or\nbecause the statement uses constructs such as CTEs that implicitly select\nfor it.  Columns in rows returned by \u003ccode\u003e.returning()\u003c/code\u003e could be returned\nunder incorrect keys (e.g. \u003ccode\u003erow[SomeClass.a]\u003c/code\u003e returning the value of\na different column), a problem most likely to manifest under concurrent\nworkloads.  ORM DELETE statements were not affected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13439\"\u003e#13439\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failed \u003ccode\u003e_orm.Session.bulk_insert_mappings()\u003c/code\u003e,\n\u003ccode\u003e_orm.Session.bulk_update_mappings()\u003c/code\u003e or\n\u003ccode\u003e_orm.Session.bulk_save_objects()\u003c/code\u003e call could leave the\n\u003ccode\u003e_orm.Session\u003c/code\u003e permanently in a \u0026quot;flushing\u0026quot; state, such as when the\ntransaction could not be begun because a previous flush had left it\nneeding a rollback.  Unlike \u003ccode\u003e_orm.Session.flush()\u003c/code\u003e, the bulk methods\nset the internal flushing flag and began the transaction outside of the\n\u003ccode\u003etry\u003c/code\u003e/\u003ccode\u003efinally\u003c/code\u003e block that resets it, so that neither\n\u003ccode\u003e_orm.Session.rollback()\u003c/code\u003e nor \u003ccode\u003e_orm.Session.close()\u003c/code\u003e would clear\nit, and every subsequent flush would raise \u003ccode\u003eInvalidRequestError: Session is already flushing\u003c/code\u003e.  Pull request courtesy Hamody We.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13485\"\u003e#13485\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where unpickling an ORM object that were loaded using loader\noptions making use of wildcard tokens, such as \u003ccode\u003e_orm.load_only()\u003c/code\u003e or\n\u003ccode\u003e_orm.raiseload()\u003c/code\u003e with \u003ccode\u003e\u0026quot;*\u0026quot;\u003c/code\u003e, would fail with \u003ccode\u003eKeyError\u003c/code\u003e or\n\u003ccode\u003eIndexError\u003c/code\u003e if the process doing the unpickling had not yet constructed\na loader path making use of that same token.  This would typically be\nobserved when the object were unpickled in a separate process, such as\nwith the \u003ccode\u003espawn\u003c/code\u003e or \u003ccode\u003eforkserver\u003c/code\u003e multiprocessing start methods, the\nlatter of which became the default on POSIX platforms as of Python 3.14.\nThe internal collection of these tokens is now established up front, so\nthat it is identical in every process.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\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\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\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/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.8.4 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.11.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix tight layout of multiple subplots with \u003ccode\u003esharey=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eNoNorm\u003c/code\u003e cursor formatting for \u003ccode\u003euint8\u003c/code\u003e images\u003c/li\u003e\n\u003cli\u003eFix occasional misalignment in reported mouse position (also fix a bug with canvas height)\u003c/li\u003e\n\u003cli\u003eFix clipped Axis labels on 3D plots with tight layout\u003c/li\u003e\n\u003cli\u003eFix inverted Axis on 3D plots\u003c/li\u003e\n\u003cli\u003eFix restoring 'auto' aspect in 3D axes after switching from 'equal'\u003c/li\u003e\n\u003cli\u003eFix missing glyphs when subsetting Type 1 fonts in PDF\u003c/li\u003e\n\u003cli\u003eFix oversized embedding of Type 42 fonts in PDF/PostScript files\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAs well as several documentation and typing improvements and corrections.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0\u003c/h2\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. \u003ca href=\"https://matplotlib.org/3.11.0/release/prev_whats_new/whats_new_3.11.0.html\"\u003eSee the release notes for more information\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc2\u003c/h2\u003e\n\u003cp\u003eThis is the second release candidate for the meso release 3.11.0.\u003c/p\u003e\n\u003cp\u003eThis release candidate fixes some problems with downstream packages, removes some missed deprecations, and corrects some additional minor bugs.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc1\u003c/h2\u003e\n\u003cp\u003eAfter an extended development stretch, we are pleased to announce the first release candidate of Matplotlib 3.11.0.\u003c/p\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner. Due to the update to the font rendering stack, we cannot guarantee that text will be bit-for-bit perfect with previous releases, so if you are using Matplotlib for testing, it may be necessary to introduce/raise a tolerance within your tests.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. Final release notes are still being curated, but you may browse \u003ca href=\"https://matplotlib.org/3.11.0/release/next_whats_new\"\u003ethe list of new features\u003c/a\u003e, \u003ca href=\"https://matplotlib.org/3.11.0/api/next_api_changes.html\"\u003eAPI changes\u003c/a\u003e, and \u003ca href=\"https://github.com/matplotlib/matplotlib/milestone/96?closed=1https://github.com/matplotlib/matplotlib/milestone/96?closed=1\"\u003eall issues/pull requests on the milestone\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs a note for downstream packagers, the font libraries have only been tested against the versions bundled with the wheels. It may be possible to expand the range of requirements, or that a requirement is too broad. Please report any issues you have building against external dependencies.\u003c/p\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\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/matplotlib/matplotlib/commit/3c1757a567c58e41e565313af2d3bcdc52076b43\"\u003e\u003ccode\u003e3c1757a\u003c/code\u003e\u003c/a\u003e REL: v3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/792c6b5fa9cd2567a80fa231af19b7770b8288e4\"\u003e\u003ccode\u003e792c6b5\u003c/code\u003e\u003c/a\u003e DOC: Prepare for 3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/aaff9f613a0886fdec0b4e20d9c5f1db15166d2c\"\u003e\u003ccode\u003eaaff9f6\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.0-doc' into v3.11.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d4f4527cce030c81eb699516bdd8c1cbab3a940d\"\u003e\u003ccode\u003ed4f4527\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32052\"\u003e#32052\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32038-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6ad4bcf48beaf05b8632e082dd35a1c8960324c8\"\u003e\u003ccode\u003e6ad4bcf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32050\"\u003e#32050\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31304-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/7fb74d3476247ee7aa078ff45ec60f25f1a9b535\"\u003e\u003ccode\u003e7fb74d3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32051\"\u003e#32051\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32037-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/c624aec7de6060e16d708fd70bd2e9302e95d3f3\"\u003e\u003ccode\u003ec624aec\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32038\"\u003e#32038\u003c/a\u003e: Fix occasional misalignment in reported mouse position (a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8eda2b79d27a4255380b97b49dcb61110690c0c1\"\u003e\u003ccode\u003e8eda2b7\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32037\"\u003e#32037\u003c/a\u003e: Bump the actions group with 3 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a0e7ae5521b59c25ced9c69e8d9aebc1b0bc7c6e\"\u003e\u003ccode\u003ea0e7ae5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31304\"\u003e#31304\u003c/a\u003e: Fix restoring 'auto' aspect in 3D axes after switching fr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/90013231a38de53af9414747a03ce010de2fe3d0\"\u003e\u003ccode\u003e9001323\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32047\"\u003e#32047\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32025-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.8.4...v3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.141.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \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 \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \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.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \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.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\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 \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \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.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\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/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.128.0...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.40.0 to 0.52.4\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.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\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\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.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.40.0...0.52.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.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/c...\n\n_Description has been truncated_","html_url":"https://github.com/sijie-Z/quant_platform/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sijie-Z%2Fquant_platform/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"},{"uuid":"5419589648","node_id":"PR_kwDOPj-SKM8AAAABDFWSKQ","number":554,"state":"closed","title":"Bump the minor-and-patch group across 1 directory with 53 updates","user":"dependabot[bot]","labels":["dependencies","python","security"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-11T02:37:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-11T02:22:46.000Z","updated_at":"2026-09-11T02:37:10.000Z","time_to_close":858,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-and-patch","update_count":53,"packages":[{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.13.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asttokens","old_version":"3.0.1","new_version":"3.0.2","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"bleach","old_version":"6.3.0","new_version":"6.4.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2026.5.20","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.20","new_version":"1.8.21","repository_url":"https://github.com/microsoft/debugpy"},{"name":"fastapi","old_version":"0.136.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastjsonschema","old_version":"2.21.2","new_version":"2.22.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"ibm-cloud-sdk-core","old_version":"3.24.4","new_version":"3.26.1","repository_url":"https://github.com/IBM/python-sdk-core"},{"name":"ibm-watsonx-orchestrate-evaluation-framework","old_version":"1.0.8","new_version":"1.6.2"},{"name":"idna","old_version":"3.16","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"ipykernel","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"9.13.0","new_version":"9.17.1","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.8","new_version":"8.1.9","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"json5","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonargparse","old_version":"4.49.0","new_version":"4.52.0","repository_url":"https://github.com/mauvilsa/jsonargparse"},{"name":"jupyter-client","old_version":"8.8.0","new_version":"8.10.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-server","old_version":"2.18.2","new_version":"2.21.0","repository_url":"https://github.com/jupyter-server/jupyter_server"},{"name":"jupyterlab","old_version":"4.5.7","new_version":"4.6.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-widgets","old_version":"3.0.16","new_version":"3.0.17","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"langchain-core","old_version":"1.4.0","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.8.5","new_version":"0.12.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"marshmallow","old_version":"4.3.0","new_version":"4.3.1","repository_url":"https://github.com/marshmallow-code/marshmallow"},{"name":"mistune","old_version":"3.2.1","new_version":"3.3.4","repository_url":"https://github.com/lepture/mistune"},{"name":"nbclient","old_version":"0.10.4","new_version":"0.11.0","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbformat","old_version":"5.10.4","new_version":"5.11.1","repository_url":"https://github.com/jupyter/nbformat"},{"name":"notebook","old_version":"7.5.6","new_version":"7.6.2","repository_url":"https://github.com/jupyter/notebook"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"platformdirs","old_version":"4.9.6","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.25.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.47.0","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"pyzmq","old_version":"27.1.0","new_version":"27.2.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"tornado","old_version":"6.5.5","new_version":"6.5.8","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"traitlets","old_version":"5.15.0","new_version":"5.16.1","repository_url":"https://github.com/ipython/traitlets"},{"name":"typer","old_version":"0.25.1","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.48.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.7.0","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"widgetsnbextension","old_version":"4.0.15","new_version":"4.0.16"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 53 updates in the /siri-watsonx-orchestrate directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.15.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.1` | `3.0.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [bleach](https://github.com/mozilla/bleach) | `6.3.0` | `6.4.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.5.20` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.20` | `1.8.21` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.141.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.2` | `2.22.2` |\n| [ibm-cloud-sdk-core](https://github.com/IBM/python-sdk-core) | `3.24.4` | `3.26.1` |\n| ibm-watsonx-orchestrate-evaluation-framework | `1.0.8` | `1.6.2` |\n| [idna](https://github.com/kjd/idna) | `3.16` | `3.19` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `7.2.0` | `7.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.13.0` | `9.17.1` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.8` | `8.1.9` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.14.0` | `0.15.0` |\n| [jsonargparse](https://github.com/mauvilsa/jsonargparse) | `4.49.0` | `4.52.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.8.0` | `8.10.0` |\n| [jupyter-server](https://github.com/jupyter-server/jupyter_server) | `2.18.2` | `2.21.0` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.5.7` | `4.6.3` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.16` | `3.0.17` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.0` | `1.6.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.5` | `0.12.2` |\n| [marshmallow](https://github.com/marshmallow-code/marshmallow) | `4.3.0` | `4.3.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.2.1` | `3.3.4` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.4` | `0.11.0` |\n| [nbformat](https://github.com/jupyter/nbformat) | `5.10.4` | `5.11.1` |\n| [notebook](https://github.com/jupyter/notebook) | `7.5.6` | `7.6.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.6` | `4.11.7` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.25.0` | `0.26.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.47.0` | `2.48.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.1.0` | `27.2.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.5` | `6.5.8` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.15.0` | `5.16.1` |\n| [typer](https://github.com/fastapi/typer) | `0.25.1` | `0.27.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.48.0` | `0.52.4` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.7.0` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.15` | `4.0.16` |\n\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.13.0 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.1 to 3.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gristlabs/asttokens/releases\"\u003easttokens's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModernize type annotations by \u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/172\"\u003egristlabs/asttokens#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pypy CI by skipping redundant mypy runs on it by \u003ca href=\"https://github.com/dsagal\"\u003e\u003ccode\u003e@​dsagal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/173\"\u003egristlabs/asttokens#173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix IndexError on source mixing lone CR with LF line endings (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/105\"\u003e#105\u003c/a\u003e) by \u003ca href=\"https://github.com/apoorvdarshan\"\u003e\u003ccode\u003e@​apoorvdarshan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/174\"\u003egristlabs/asttokens#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease modernization, and publish to PyPI from CI via trusted publishing by \u003ca href=\"https://github.com/dsagal\"\u003e\u003ccode\u003e@​dsagal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/175\"\u003egristlabs/asttokens#175\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/172\"\u003egristlabs/asttokens#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apoorvdarshan\"\u003e\u003ccode\u003e@​apoorvdarshan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/174\"\u003egristlabs/asttokens#174\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.1...v3.0.2\"\u003ehttps://github.com/gristlabs/asttokens/compare/v3.0.1...v3.0.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/gristlabs/asttokens/commit/f97a6e1403d9f0e93940a11b507524550a5c3896\"\u003e\u003ccode\u003ef97a6e1\u003c/code\u003e\u003c/a\u003e Release modernization, and publish to PyPI from CI via trusted publishing (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/175\"\u003e#175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bb3c487da039e21638150f53c2f8d23ba2d92826\"\u003e\u003ccode\u003ebb3c487\u003c/code\u003e\u003c/a\u003e Fix IndexError on source mixing lone CR with LF line endings (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/105\"\u003e#105\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/d1eed1023e1203f5392d3e2ebd1f195fdf4c1973\"\u003e\u003ccode\u003ed1eed10\u003c/code\u003e\u003c/a\u003e Fix pypy CI by skipping redundant mypy runs on it (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/b8834d38dc69eea2ceb401cf068e0c78394f3f68\"\u003e\u003ccode\u003eb8834d3\u003c/code\u003e\u003c/a\u003e Modernize type annotations (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/172\"\u003e#172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.1...v3.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.14.3 to 4.15.0\n\nUpdates `bleach` from 6.3.0 to 6.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.4.0 (June 5th, 2026)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE: 2026-06-05: Bleach is no longer maintained. There will be no future\nreleases including for security issues.\u003c/strong\u003e\nSee issue: \u003ccode\u003e\u0026lt;https://github.com/mozilla/bleach/issues/698\u0026gt;\u003c/code\u003e__\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for pypy 3.10. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/764\"\u003e#764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug 2023812 / GHSA-8rfp-98v4-mmr6.\u003c/p\u003e\n\u003cp\u003eFix XSS issue with sanitize_uri_value where disallowed schemes with\nUnicode invisible characters wouldn't be rejected.\u003c/p\u003e\n\u003cp\u003eFor example::\u003c/p\u003e\n\u003cp\u003eimport bleach\npayload1 = '\u003c!-- raw HTML omitted --\u003eClick\u003c!-- raw HTML omitted --\u003e'\nresult1 = bleach.clean(payload1)\nprint(repr(result1))\u003c/p\u003e\n\u003cp\u003eoutputs::\u003c/p\u003e\n\u003cp\u003e'\u003c!-- raw HTML omitted --\u003eClick\u003c!-- raw HTML omitted --\u003e'\u003c/p\u003e\n\u003cp\u003eSee the advisory for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix GHSA-gj48-438w-jh9v.\u003c/p\u003e\n\u003cp\u003eFix issue where URI sanitization wasn't happening in formaction attributes.\u003c/p\u003e\n\u003cp\u003eSee the advisory for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for pypy 3.11. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/764\"\u003e#764\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop version max in tinycss2 pin. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/772\"\u003e#772\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis removes one of the things we had to keep checking and updating. Users\nnow own the responsibility for correctness with the version of tinycss2\nthey're using.\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/mozilla/bleach/commit/f0355a7af00500482c5292c6c83290c6a178068d\"\u003e\u003ccode\u003ef0355a7\u003c/code\u003e\u003c/a\u003e fix: fix last release date in CHANGES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/ae4e8a26706516ad01b92e66321b480208a440da\"\u003e\u003ccode\u003eae4e8a2\u003c/code\u003e\u003c/a\u003e chore: bleach 6.4.0 and final release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/970df58e9f0c55cc52244f3f0106e473a40d886d\"\u003e\u003ccode\u003e970df58\u003c/code\u003e\u003c/a\u003e fix: uri-sanitization in formaction attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/7c4867c32344d1c961107fae62240a6f0dc680dc\"\u003e\u003ccode\u003e7c4867c\u003c/code\u003e\u003c/a\u003e fix: xss bypass in allowed protocol test using unicode invisible characters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/913ab75992b845e2c9c060c41f24d46921db4693\"\u003e\u003ccode\u003e913ab75\u003c/code\u003e\u003c/a\u003e fix: reduce redundancy in workflow jobs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/218c15af455c8dec14f98fcb2e235f8680e93930\"\u003e\u003ccode\u003e218c15a\u003c/code\u003e\u003c/a\u003e fix: rework pip caching\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/4f0b097bf80548a022050e2f71f024d755a9f154\"\u003e\u003ccode\u003e4f0b097\u003c/code\u003e\u003c/a\u003e fix: fix tox platform restrictions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/e95a79d07bb5d792425c2bc0ef5dd03f6614f3bb\"\u003e\u003ccode\u003ee95a79d\u003c/code\u003e\u003c/a\u003e chore: update pytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/91539d4e80d4685b8f2bedc79076ff0ff6c1b911\"\u003e\u003ccode\u003e91539d4\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 5.0.3 to 5.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cd47b4ce495859065da23c2116f651e591e1e90d\"\u003e\u003ccode\u003ecd47b4c\u003c/code\u003e\u003c/a\u003e fix: handle left-angle-bracket that's not a tag (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/733\"\u003e#733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.3.0...v6.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.5.20 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.05.20...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.7 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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/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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\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/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.7...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.4.1 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.4.1...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.20 to 1.8.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.21\u003c/h2\u003e\n\u003cp\u003eFixes for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReturn evaluate result in DAP response body instead of writing to stdout: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent invalid \u003ccode\u003escopes\u003c/code\u003e request from crashing debug session: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2026\"\u003e#2026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip uninitialized \u003ccode\u003e__slots__\u003c/code\u003e in variable resolver: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2024\"\u003e#2024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e-c\u003c/code\u003e arguments that are \u003ccode\u003ebytes\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix evaluation of variables from chained exception frames: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2018\"\u003e#2018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eContinueRequest\u003c/code\u003e with a specific \u003ccode\u003ethreadId\u003c/code\u003e no longer resumes all threads (in-process adapter): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2012\"\u003e#2012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid strong reference to exceptions during unwind: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2008\"\u003e#2008\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow error message on evaluate failures in the hover context: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2006\"\u003e#2006\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisplay \u003ccode\u003edlerror\u003c/code\u003e output when \u003ccode\u003edlopen\u003c/code\u003e fails: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2000\"\u003e#2000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace removed \u003ccode\u003epkgutil.get_loader\u003c/code\u003e with \u003ccode\u003eimportlib.util.find_spec\u003c/code\u003e in \u003ccode\u003eget_fullname\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1998\"\u003e#1998\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eEnhancements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to ignore all system exit codes: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2017\"\u003e#2017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePull changes from pydevd up to March 2026: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2010\"\u003e#2010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure work:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress Flawfinder false positives on Cython memcpy / read-loop iterators (TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816219\"\u003e#2816219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2028\"\u003e#2028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2029\"\u003e#2029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2030\"\u003e#2030\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2031\"\u003e#2031\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/maxbachmann\"\u003e\u003ccode\u003e@​maxbachmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/mfussenegger\"\u003e\u003ccode\u003e@​mfussenegger\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/sambrightman\"\u003e\u003ccode\u003e@​sambrightman\u003c/code\u003e\u003c/a\u003e for the commits.\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/microsoft/debugpy/commit/858b05c08555cfc54efa7cf90e70184c7495b38e\"\u003e\u003ccode\u003e858b05c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e: suppress Flawfinder false positive on Cython JoinPyUnicode ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/f0c34f133ad3eb7992ca50e45e5459f9d58f4be8\"\u003e\u003ccode\u003ef0c34f1\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e: suppress Flawfinder false positive on Cython DIGIT_PAIRS_8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/4c70e13d0e3fc8eee5013cd2a41c7a6d752d55d3\"\u003e\u003ccode\u003e4c70e13\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/19c2b8c029975a6ba2e4e521d8fbdf5f1b3ed8fd\"\u003e\u003ccode\u003e19c2b8c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ab9263839637357f3372ffb550395ffbf8ce9f77\"\u003e\u003ccode\u003eab92638\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2031\"\u003e#2031\u003c/a\u003e from StellaHuang95/stellahuang/tsa-2816219-flawfinde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/12bd4fef7ea5c35248d9f175f5b0218b970fa64c\"\u003e\u003ccode\u003e12bd4fe\u003c/code\u003e\u003c/a\u003e Return evaluate result in DAP response body instead of writing to stdout (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2027\"\u003e#2027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/8bd57a7d446d6ec4d7dd4e580d00cdea193ddcd9\"\u003e\u003ccode\u003e8bd57a7\u003c/code\u003e\u003c/a\u003e Prevent invalid scopes request from crashing debug session (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2026\"\u003e#2026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/bf118c8d0ec97e584d2f3cfd781f04a745a1334c\"\u003e\u003ccode\u003ebf118c8\u003c/code\u003e\u003c/a\u003e Skip uninitialized \u003cstrong\u003eslots\u003c/strong\u003e in variable resolver (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/a55be0e6f0700646e0833097ab78b2e4ba68745b\"\u003e\u003ccode\u003ea55be0e\u003c/code\u003e\u003c/a\u003e Potential fix when \u003ccode\u003e-c\u003c/code\u003e arguments are bytes instead of a str (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/0f037adec6fb2f61ad225849e953188ec349adbc\"\u003e\u003ccode\u003e0f037ad\u003c/code\u003e\u003c/a\u003e Fix evaluation of variables from chained exception frames (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2018\"\u003e#2018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.20...v1.8.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.136.3 to 0.141.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \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 \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \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.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \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.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\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 \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pu...\n\n_Description has been truncated_","html_url":"https://github.com/IBM/oic-i-agentic-ai-tutorials/pull/554","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Foic-i-agentic-ai-tutorials/issues/554","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/554/packages"},{"uuid":"5415397868","node_id":"PR_kwDOS9agj88AAAABDB___g","number":385,"state":"closed","title":"chore(deps)(deps): Bump the python-minor-patch group across 1 directory with 91 updates","user":"dependabot[bot]","labels":["invalid","security","tech-debt","priority:p3","area:backend","dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-11T01:07:38.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-10T17:34:08.000Z","updated_at":"2026-09-11T01:07:48.000Z","time_to_close":27210,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): Bump","group_name":"python-minor-patch","update_count":91,"packages":[{"name":"strands-agents-tools","old_version":"0.8.5","new_version":"0.8.8","repository_url":"https://github.com/strands-agents/tools"},{"name":"boto3","old_version":"1.43.32","new_version":"1.43.89","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.43.55","new_version":"1.43.89","repository_url":"https://github.com/boto/botocore"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"awslabs-aws-api-mcp-server","old_version":"1.4.1","new_version":"1.5.4","repository_url":"https://github.com/awslabs/mcp"},{"name":"awslabs-billing-cost-management-mcp-server","old_version":"0.0.29","new_version":"0.0.36","repository_url":"https://github.com/awslabs/mcp"},{"name":"pypdf","old_version":"6.16.1","new_version":"6.18.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"bedrock-agentcore-starter-toolkit","old_version":"0.3.11","new_version":"0.3.12","repository_url":"https://github.com/aws/bedrock-agentcore-starter-toolkit"},{"name":"uv","old_version":"0.12.0","new_version":"0.12.10","repository_url":"https://github.com/astral-sh/uv"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.10.0","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"ast-serialize","old_version":"0.6.0","new_version":"0.10.0","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"awscli","old_version":"1.45.55","new_version":"1.46.1","repository_url":"https://github.com/aws/aws-cli"},{"name":"awscrt","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/awslabs/aws-crt-python"},{"name":"bedrock-agentcore","old_version":"1.19.0","new_version":"1.22.0","repository_url":"https://github.com/aws/bedrock-agentcore-sdk-python"},{"name":"caio","old_version":"0.9.25","new_version":"0.12.4","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.11.0","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"cyclopts","old_version":"4.18.0","new_version":"4.25.0","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"dill","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.4.0","new_version":"0.4.3","repository_url":"https://github.com/pypa/distlib"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"docutils","old_version":"0.19","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.29.4","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"googleapis-common-protos","old_version":"1.71.0","new_version":"1.75.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"griffelib","old_version":"2.0.2","new_version":"2.3.0"},{"name":"grpcio","old_version":"1.81.1","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joserfc","old_version":"1.7.1","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"jsonschema-path","old_version":"0.3.4","new_version":"0.5.0","repository_url":"https://github.com/p1c2u/jsonschema-path"},{"name":"kubernetes","old_version":"36.0.2","new_version":"36.0.3","repository_url":"https://github.com/kubernetes-client/python"},{"name":"librt","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/mypyc/librt"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"markdownify","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/matthewwithanm/python-markdownify"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"ollama","old_version":"0.6.0","new_version":"0.6.2","repository_url":"https://github.com/ollama/ollama-python"},{"name":"opentelemetry-util-genai","old_version":"1.0b0","new_version":"1.1b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pathable","old_version":"0.4.4","new_version":"0.6.0","repository_url":"https://github.com/p1c2u/pathable"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"python-discovery","old_version":"1.4.2","new_version":"1.6.0","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rich-rst","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/wasi-master/rich-rst"},{"name":"rpds-py","old_version":"2026.5.1","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"ruamel-yaml","old_version":"0.18.16","new_version":"0.19.1"},{"name":"s3transfer","old_version":"0.19.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"slack-bolt","old_version":"1.26.0","new_version":"1.30.0","repository_url":"https://github.com/slackapi/bolt-python"},{"name":"slack-sdk","old_version":"3.37.0","new_version":"3.44.1","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"soupsieve","old_version":"2.9.1","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlglot","old_version":"30.12.0","new_version":"30.18.0","repository_url":"https://github.com/tobymao/sqlglot"},{"name":"sse-starlette","old_version":"3.0.3","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"strands-agents","old_version":"1.50.2","new_version":"1.54.0","repository_url":"https://github.com/strands-agents/harness-sdk"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.2.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"typer","old_version":"0.20.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.3","repository_url":"https://github.com/python/tzdata"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"21.5.1","new_version":"21.7.8","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"17.0.1","new_version":"17.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 91 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [strands-agents-tools](https://github.com/strands-agents/tools) | `0.8.5` | `0.8.8` |\n| [boto3](https://github.com/boto/boto3) | `1.43.32` | `1.43.89` |\n| [botocore](https://github.com/boto/botocore) | `1.43.55` | `1.43.89` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [awslabs-aws-api-mcp-server](https://github.com/awslabs/mcp) | `1.4.1` | `1.5.4` |\n| [awslabs-billing-cost-management-mcp-server](https://github.com/awslabs/mcp) | `0.0.29` | `0.0.36` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.1` | `6.18.0` |\n| [bedrock-agentcore-starter-toolkit](https://github.com/aws/bedrock-agentcore-starter-toolkit) | `0.3.11` | `0.3.12` |\n| [uv](https://github.com/astral-sh/uv) | `0.12.0` | `0.12.10` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.0` | `4.15.1` |\n| [asgiref](https://github.com/django/asgiref) | `3.10.0` | `3.12.1` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.6.0` | `0.10.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [awscli](https://github.com/aws/aws-cli) | `1.45.55` | `1.46.1` |\n| [awscrt](https://github.com/awslabs/aws-crt-python) | `0.36.0` | `0.36.2` |\n| [bedrock-agentcore](https://github.com/aws/bedrock-agentcore-sdk-python) | `1.19.0` | `1.22.0` |\n| [caio](https://github.com/mosquito/caio) | `0.9.25` | `0.12.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.11.0` | `7.16.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.18.0` | `4.25.0` |\n| [dill](https://github.com/uqfoundation/dill) | `0.4.0` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.4.0` | `0.4.3` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.23` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.29.4` | `3.32.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.71.0` | `1.75.3` |\n| griffelib | `2.0.2` | `2.3.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.81.1` | `1.83.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.1` | `1.7.5` |\n| [jsonschema-path](https://github.com/p1c2u/jsonschema-path) | `0.3.4` | `0.5.0` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `36.0.2` | `36.0.3` |\n| [librt](https://github.com/mypyc/librt) | `0.13.0` | `0.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [markdownify](https://github.com/matthewwithanm/python-markdownify) | `1.2.0` | `1.2.3` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.0` | `0.6.2` |\n| [opentelemetry-util-genai](https://github.com/open-telemetry/opentelemetry-python-contrib) | `1.0b0` | `1.1b0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pathable](https://github.com/p1c2u/pathable) | `0.4.4` | `0.6.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.11.7` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.4.2` | `1.6.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rich-rst](https://github.com/wasi-master/rich-rst) | `2.0.1` | `2.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.5.1` | `2026.6.3` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| ruamel-yaml | `0.18.16` | `0.19.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.19.0` | `0.19.2` |\n| [slack-bolt](https://github.com/slackapi/bolt-python) | `1.26.0` | `1.30.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.37.0` | `3.44.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.9.1` | `2.9.2` |\n| [sqlglot](https://github.com/tobymao/sqlglot) | `30.12.0` | `30.18.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.0.3` | `3.4.11` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [strands-agents](https://github.com/strands-agents/harness-sdk) | `1.50.2` | `1.54.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.2.0` | `3.3.0` |\n| [typer](https://github.com/fastapi/typer) | `0.20.0` | `0.27.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.5.1` | `21.7.8` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [websockets](https://github.com/python-websockets/websockets) | `17.0.1` | `17.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.3.0` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n\n\nUpdates `strands-agents-tools` from 0.8.5 to 0.8.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/strands-agents/tools/releases\"\u003estrands-agents-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.8\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.7..v0.8.8\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(mem0): make memory_id ownership check fail-closed  (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/596\"\u003e#596\u003c/a\u003e) (fd4feb0)\u003c/li\u003e\n\u003cli\u003efix(http_request): strip non-standard headers on cross-host redirects (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/595\"\u003e#595\u003c/a\u003e) (64db9d7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.7\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.6..v0.8.7\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e) (1174bd6)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e) (c7c0c28)\u003c/li\u003e\n\u003cli\u003efix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e) (a47c204)\u003c/li\u003e\n\u003cli\u003efix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e) (2425040)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/549\"\u003e#549\u003c/a\u003e) (badcb5c)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👷 CI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/583\"\u003e#583\u003c/a\u003e) (29df37f)\u003c/li\u003e\n\u003cli\u003eci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/561\"\u003e#561\u003c/a\u003e) (836b0d5)\u003c/li\u003e\n\u003cli\u003eci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e) (db4cf76)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.6\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.5..v0.8.6\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: deprecate 11 tools superseded by SDK capability, MCP servers, or nothing (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/566\"\u003e#566\u003c/a\u003e) (bddfd3a)\u003c/li\u003e\n\u003cli\u003efeat: deprecate sleep, editor, and shell in favor of SDK vended tools (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/550\"\u003e#550\u003c/a\u003e) (45bf7b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(environment): drive value masking from environment variable (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/545\"\u003e#545\u003c/a\u003e) (60b6390)\u003c/li\u003e\n\u003cli\u003efix(use_aws): gate and redact ssm parameter and kms responses (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/520\"\u003e#520\u003c/a\u003e) (f924945)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: note that tools are experimental and require an independent security review (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/547\"\u003e#547\u003c/a\u003e) (6702a90)\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/strands-agents/tools/commit/fd4feb0a2336745e706ea16b4da2fde1823d95f3\"\u003e\u003ccode\u003efd4feb0\u003c/code\u003e\u003c/a\u003e fix(mem0): make memory_id ownership check fail-closed  (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/64db9d768a63f0a31e37c242829c6334f252ea08\"\u003e\u003ccode\u003e64db9d7\u003c/code\u003e\u003c/a\u003e fix(http_request): strip non-standard headers on cross-host redirects (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/595\"\u003e#595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/c7c0c28ad9e450a3193e49d7f25b1435a2bd5d99\"\u003e\u003ccode\u003ec7c0c28\u003c/code\u003e\u003c/a\u003e fix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/29df37f0a6823125dcd685fda57b44e47841e8ec\"\u003e\u003ccode\u003e29df37f\u003c/code\u003e\u003c/a\u003e ci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/badcb5c42c1d601ceebb1bc732c6c7a2a2d53d8c\"\u003e\u003ccode\u003ebadcb5c\u003c/code\u003e\u003c/a\u003e docs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/a47c20443eadc223944eb134ea2f2d1b9c0638fc\"\u003e\u003ccode\u003ea47c204\u003c/code\u003e\u003c/a\u003e fix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/24250405149c69c1be1610f018e86417c1c4fc26\"\u003e\u003ccode\u003e2425040\u003c/code\u003e\u003c/a\u003e fix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/836b0d5615380a4d2b7f0897382db2eb5e695e95\"\u003e\u003ccode\u003e836b0d5\u003c/code\u003e\u003c/a\u003e ci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/1174bd667a66ec2b50ce0ee5e68dfb966334d407\"\u003e\u003ccode\u003e1174bd6\u003c/code\u003e\u003c/a\u003e feat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/db4cf769306aa9c76b78ce5444543f02f769d95d\"\u003e\u003ccode\u003edb4cf76\u003c/code\u003e\u003c/a\u003e ci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/strands-agents/tools/compare/v0.8.5...v0.8.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.32 to 1.43.89\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1895b95e819bcba9079578378773a5013d1648b8\"\u003e\u003ccode\u003e1895b95\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.89'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b85c52150ef8b7fe2190cdeb878061eb5ce281d1\"\u003e\u003ccode\u003eb85c521\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.89\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f7290830f9b9b4101d3596c6a1b4a0a1bcc9f77f\"\u003e\u003ccode\u003ef729083\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bb429b1d8d255e7ebd01e2ad8371ac8c449fa018\"\u003e\u003ccode\u003ebb429b1\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/257465b72f6dc940b8ec7525e35ebd1690d2f6f5\"\u003e\u003ccode\u003e257465b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e373d8d9e73a5764d22ce6776404fb35d8d7fa94\"\u003e\u003ccode\u003ee373d8d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.88\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6ce83dedf2bcf7089c3ab5fbae5347e384e43a6d\"\u003e\u003ccode\u003e6ce83de\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5740c2e1387ccd20b7028361a1d3b3e766b7f0e\"\u003e\u003ccode\u003ed5740c2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.87'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bd30961ebda9a9d63e9f9f1cbb4645f96082cd74\"\u003e\u003ccode\u003ebd30961\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.87' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/316b72cad4fd915c6e6a2e081336a1a473018a72\"\u003e\u003ccode\u003e316b72c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.87\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.32...1.43.89\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.43.55 to 1.43.89\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/acf9b2f1687af5cc1a5c00b9936121006b9a5f8a\"\u003e\u003ccode\u003eacf9b2f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.89'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b282cbf159154445ccb20d610b6aa5faf58c4f8f\"\u003e\u003ccode\u003eb282cbf\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.89\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6cb9a9345cb9b77df1c63c41460bb1133a94ac42\"\u003e\u003ccode\u003e6cb9a93\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/35b7c03ff2956534564abdccf8e4f2853d2f2985\"\u003e\u003ccode\u003e35b7c03\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6802a24c226236b94119345fff3613a9764e866d\"\u003e\u003ccode\u003e6802a24\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/5dbc8412eb696d870621675e9c89343aa2e032c4\"\u003e\u003ccode\u003e5dbc841\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.88\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/221da705f8c3db8fdcc59cc663edde3a247a2a68\"\u003e\u003ccode\u003e221da70\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6a9e112fa6980053406c4b5eaef3a10c92e5d819\"\u003e\u003ccode\u003e6a9e112\u003c/code\u003e\u003c/a\u003e Merge customizations for SocialMessaging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/bab8989aa41152581b2cb8de45cd7f0fdc2d062b\"\u003e\u003ccode\u003ebab8989\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/boto/botocore/issues/3791\"\u003e#3791\u003c/a\u003e from Alan4506/docs/presign-sigv2-warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9f49da737201d6b965f753fcba47677b6e1af7ab\"\u003e\u003ccode\u003e9f49da7\u003c/code\u003e\u003c/a\u003e Address reviewer feedback on readability\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.43.55...1.43.89\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\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.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.4...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-aws-api-mcp-server` from 1.4.1 to 1.5.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-billing-cost-management-mcp-server` from 0.0.29 to 0.0.36\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.1 to 6.18.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.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003cp\u003ePlease note that this release requires users which previously overwrote the default limits to migrate to the new approach: \u003ca href=\"https://pypdf.readthedocs.io/en/6.18.0/user/security.html#global\"\u003eDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIn short:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eapply_configuration\u003c/code\u003e as a context manager to temporarily overwrite configuration values.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eoverwrite_configuration\u003c/code\u003e to change the configuration values for the whole session.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe old overwrites should continue to work in most cases. If you have migrated successfully and do not need the legacy handling anymore (which can cause some overhead), consider using the temporary \u003ccode\u003edisable_legacy_handling\u003c/code\u003e setting:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom pypdf import overwrite_configuration\r\n\u003cp\u003eoverwrite_configuration(disable_legacy_handling=True)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIn case you are experiencing some unexpected issues after the migration, consider opening a new issue (or commenting on an existing one) with the necessary details to reproduce it.\u003c/p\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\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\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\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\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\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.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\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\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\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\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e) by \u003ca href=\"https://github.com/petermik68-sudo\"\u003e\u003ccode\u003e@​petermik68-sudo\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 an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e) by \u003ca href=\"https://github.com/devYRPauli\"\u003e\u003ccode\u003e@​devYRPauli\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e) by \u003ca href=\"https://github.com/SomSamantray\"\u003e\u003ccode\u003e@​SomSamantray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\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.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\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/18e4c226a4c2dd7f187854015f52e87350f84161\"\u003e\u003ccode\u003e18e4c22\u003c/code\u003e\u003c/a\u003e REL: 6.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/82501d2993c6387833c4949d205caeb188f8bb9e\"\u003e\u003ccode\u003e82501d2\u003c/code\u003e\u003c/a\u003e SEC: Limit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d35834b5373e80bda9b6d3537eac699170ca52fd\"\u003e\u003ccode\u003ed35834b\u003c/code\u003e\u003c/a\u003e ENH: Draw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4b16bbb5ba97360d68f431481cc6624ece1c6bd6\"\u003e\u003ccode\u003e4b16bbb\u003c/code\u003e\u003c/a\u003e STY: Rename variable for readability (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a1ce7fb98e7491c59a7ce03977598649ab31d5fd\"\u003e\u003ccode\u003ea1ce7fb\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when a page tree entry is not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4048\"\u003e#4048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/06b97ced09de5b09c8e39dd2bfbc413f4a06be4a\"\u003e\u003ccode\u003e06b97ce\u003c/code\u003e\u003c/a\u003e DEV: Bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4053\"\u003e#4053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d3f790cc9f201fe7e83ec2ec971aef361a746b75\"\u003e\u003ccode\u003ed3f790c\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the annotations are not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4046\"\u003e#4046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/3dc716eaf16b7982ff44d6f45649c51abec99e63\"\u003e\u003ccode\u003e3dc716e\u003c/code\u003e\u003c/a\u003e STY: Enforce lowercase function variables (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4045\"\u003e#4045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ec2406f31146c28deb45c26fd833779570c4144a\"\u003e\u003ccode\u003eec2406f\u003c/code\u003e\u003c/a\u003e DEP: Rework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c76eed7bdd6c6a6f05dbcfea147bd41d6d21e598\"\u003e\u003ccode\u003ec76eed7\u003c/code\u003e\u003c/a\u003e REL: 6.17.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bedrock-agentcore-starter-toolkit` from 0.3.11 to 0.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/releases\"\u003ebedrock-agentcore-starter-toolkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBedrock AgentCore Starter Toolkit v0.3.12\u003c/h2\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install bedrock-agentcore-starter-toolkit==0.3.12\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/blob/v0.3.12/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRelease v0.3.11 by \u003ca href=\"https://github.com/agentcore-devx-automation\"\u003e\u003ccode\u003e@​agentcore-devx-automation\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/555\"\u003eaws/bedrock-agentcore-starter-toolkit#555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add input validation to memory fields by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/571\"\u003eaws/bedrock-agentcore-starter-toolkit#571\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/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ehttps://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\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/aws/bedrock-agentcore-starter-toolkit/blob/main/CHANGELOG.md\"\u003ebedrock-agentcore-starter-toolkit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.12] - 2026-08-19\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e) (e3fe8a2)\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e) (be24ff2)\u003c/li\u003e\n\u003cli\u003echore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e) (d149aa8)\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/aws/bedrock-agentcore-starter-toolkit/commit/e3fe8a210092db389e4583cec1a58ce5c52ac0ac\"\u003e\u003ccode\u003ee3fe8a2\u003c/code\u003e\u003c/a\u003e fix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/be24ff2e19d599544b1c0ce7a29e26e5f45038cd\"\u003e\u003ccode\u003ebe24ff2\u003c/code\u003e\u003c/a\u003e fix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/d149aa8d024824fb88109a4a2458acd0ea04885e\"\u003e\u003ccode\u003ed149aa8\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uv` from 0.12.0 to 0.12.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-04.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAttempt to revoke short-lived PyPI trusted-publishing tokens after \u003ccode\u003euv publish\u003c/code\u003e completes, including when publishing fails (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21423\"\u003e#21423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOmit \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings for packages outside the resolution from \u003ccode\u003euv.lock\u003c/code\u003e with the \u003ccode\u003emissing-exclude-newer-package-lock\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow terminal dependency cycles in \u003ccode\u003euv tree --invert\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21404\"\u003e#21404\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up locking large workspaces with conflicts by excluding unrelated extras and dependency groups from conflict simplification (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21399\"\u003e#21399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up \u003ccode\u003euv publish\u003c/code\u003e by hashing each artifact in a single blocking task and reusing the buffer across reads (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21389\"\u003e#21389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003e--locked\u003c/code\u003e from failing when \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings differ only for packages outside the resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when an absolute \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is moved later (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when a package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is disabled (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21450\"\u003e#21450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire an explicit \u003ccode\u003e--name\u003c/code\u003e when \u003ccode\u003euv init\u003c/code\u003e would infer a project name reserved for a Python interpreter (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21395\"\u003e#21395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrite package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoffs to \u003ccode\u003euv.lock\u003c/code\u003e in a deterministic order (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21453\"\u003e#21453\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.12.10\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/uv/releases/download/0.12.10/uv-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/uv/releases/download/0.12.10/uv-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload uv 0.12.10\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-apple-darwin.tar.gz\"\u003euv-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-apple-darwin.tar.gz\"\u003euv-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-pc-windows-msvc.zip\"\u003euv-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-i686-pc-windows-msvc.zip\"\u003euv-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-pc-windows-msvc.zip\"\u003euv-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-04.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAttempt to revoke short-lived PyPI trusted-publishing tokens after \u003ccode\u003euv publish\u003c/code\u003e completes, including when publishing fails (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21423\"\u003e#21423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOmit \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings for packages outside the resolution from \u003ccode\u003euv.lock\u003c/code\u003e with the \u003ccode\u003emissing-exclude-newer-package-lock\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow terminal dependency cycles in \u003ccode\u003euv tree --invert\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21404\"\u003e#21404\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up locking large workspaces with conflicts by excluding unrelated extras and dependency groups from conflict simplification (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21399\"\u003e#21399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up \u003ccode\u003euv publish\u003c/code\u003e by hashing each artifact in a single blocking task and reusing the buffer across reads (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21389\"\u003e#21389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003e--locked\u003c/code\u003e from failing when \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings differ only for packages outside the resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when an absolute \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is moved later (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when a package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is disabled (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21450\"\u003e#21450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire an explicit \u003ccode\u003e--name\u003c/code\u003e when \u003ccode\u003euv init\u003c/code\u003e would infer a project name reserved for a Python interpreter (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21395\"\u003e#21395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrite package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoffs to \u003ccode\u003euv.lock\u003c/code\u003e in a deterministic order (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21453\"\u003e#21453\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.12.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-01.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd CPython 3.15.0rc2 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21413\"\u003e#21413\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--no-locked\u003c/code\u003e and \u003ccode\u003e--no-frozen\u003c/code\u003e to disable lock modes enabled by \u003ccode\u003eUV_LOCKED\u003c/code\u003e and \u003ccode\u003eUV_FROZEN\u003c/code\u003e for a single invocation (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21408\"\u003e#21408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport the exact command-line lock-mode flag in warnings and errors (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21402\"\u003e#21402\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up cold wheel installs by extracting each streaming ZIP archive in a single blocking task and reusing buffers across files (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21372\"\u003e#21372\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003easync_http_range_reader\u003c/code\u003e to 0.11.1 to address a potential memory-safety issue when reading metadata ranges from untrusted wheels (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21401\"\u003e#21401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove sensitive headers when redirects cross authentication realms, including same-host redirects that change URL schemes (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRedact secrets in signed URLs from retry diagnostics, including nested request errors (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGive \u003ccode\u003e--locked\u003c/code\u003e, \u003ccode\u003e--frozen\u003c/code\u003e, \u003ccode\u003e--check\u003c/code\u003e, and \u003ccode\u003e--check-exists\u003c/code\u003e precedence over conflicting \u003ccode\u003eUV_LOCKED\u003c/code\u003e and \u003ccode\u003eUV_FROZEN\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21396\"\u003e#21396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent concurrent uv processes from redundantly extracting the same local or source-built wheel (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21400\"\u003e#21400\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/astral-sh/uv/commit/3c979abda4530fe9bf3d92e9bcf5c5575e3b3126\"\u003e\u003ccode\u003e3c979ab\u003c/code\u003e\u003c/a\u003e Bump version to 0.12.10 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21475\"\u003e#21475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/e302ffe2c07680e794fd02ae31cbefd180b7fc2d\"\u003e\u003ccode\u003ee302ffe\u003c/code\u003e\u003c/a\u003e Fix signing dry-run secret access and manifest generation (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21474\"\u003e#21474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/18ab29580499d86b1ba195dbfcc0fe1654cd35e7\"\u003e\u003ccode\u003e18ab295\u003c/code\u003e\u003c/a\u003e Allow release preparation to update the lockfile (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21473\"\u003e#21473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/944d45d8ff5c2e319e9c688667b5680bf1f7a5ca\"\u003e\u003ccode\u003e944d45d\u003c/code\u003e\u003c/a\u003e Upgrade release preparation to uv 0.12.9 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21472\"\u003e#21472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/3e98bf51c2e7c39ad8f26d9098267d4b2b97fc9a\"\u003e\u003ccode\u003e3e98bf5\u003c/code\u003e\u003c/a\u003e Exercise signing for GitHub release archives (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21445\"\u003e#21445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/802a2d282e03f5775c4f2fb5cc0a154d3d991300\"\u003e\u003ccode\u003e802a2d2\u003c/code\u003e\u003c/a\u003e Use Python for signed wheel assembly (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21448\"\u003e#21448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/fc5bccada171f77ae2554caa2e139214203c07ad\"\u003e\u003ccode\u003efc5bcca\u003c/code\u003e\u003c/a\u003e Add Azure-backed release binary signing to release dry-runs (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21418\"\u003e#21418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/e90047bc10bbbc04db40165dcc32c7e5334af962\"\u003e\u003ccode\u003ee90047b\u003c/code\u003e\u003c/a\u003e Add a \u003ccode\u003euv-dev inject-signed-wheel-binaries\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/20622\"\u003e#20622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/a5fc364c1545fdcb2e40abb71a5aa1ecab1ebf3a\"\u003e\u003ccode\u003ea5fc364\u003c/code\u003e\u003c/a\u003e Omit unused \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/227d1dbb33f5f1eb1956218fe100e81e377153c7\"\u003e\u003ccode\u003e227d1db\u003c/code\u003e\u003c/a\u003e Ignore unused \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.12.0...0.12.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.6.1 to 4.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.2 - 2026-08-10\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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/pre-commit/pre-commit/commit/9767b6c8211a6bf683875a0afcf2b390457a4b66\"\u003e\u003ccode\u003e9767b6c\u003c/code\u003e\u003c/a\u003e v4.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/42ee3ff5ac1cae639613c9ad002d0502ae82384f\"\u003e\u003ccode\u003e42ee3ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e from pre-commit/npm-build-scripts-11-x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/30566198cb2d05201625f92b660a34c38ffe2dc7\"\u003e\u003ccode\u003e3056619\u003c/code\u003e\u003c/a\u003e fix \u003ccode\u003elanguage: node\u003c/code\u003e for hooks with build scripts and npm 11.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.1...v4.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiofile` from 3.11.1 to 3.12.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mosquito/aiofile/releases\"\u003eaiofile's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.12.3\u003c/h2\u003e\n\u003cp\u003eUpdate README.md\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multi-library throughput benchmark by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/111\"\u003emosquito/aiofile#111\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd throughput comparison table to the README benchmark section by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/112\"\u003emosquito/aiofile#112\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix double close(), TextFileWrapper.read() overshoot, add closed attribute by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/110\"\u003emosquito/aiofile#110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump caio dependency to ~0.12.0 by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/109\"\u003emosquito/aiofile#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\"\u003ehttps://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/f1de9014ad7b7954e6417fc3c4d178d6ff540973\"\u003e\u003ccode\u003ef1de901\u003c/code\u003e\u003c/a\u003e Rework benchmark: subprocess-per-participant, fixed op count, real latency pe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/d1c0d9fd665c96166d336a114c3c0ca3babc514a\"\u003e\u003ccode\u003ed1c0d9f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/112\"\u003e#112\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/0434967d158cdb8aa86b0f610d33ba5e798f7b9f\"\u003e\u003ccode\u003e0434967\u003c/code\u003e\u003c/a\u003e Add throughput comparison table to the README benchmark section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/82b9d5b11e05a6abe74f2704f58c6e6bc71198fb\"\u003e\u003ccode\u003e82b9d5b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/111\"\u003e#111\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/ef32a02b31f01e6f1a13f84ff0bf1ac026b70175\"\u003e\u003ccode\u003eef32a02\u003c/code\u003e\u003c/a\u003e Add multi-library throughput benchmark\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/b6ab49e52891793fa4dbaae51290983549821980\"\u003e\u003ccode\u003eb6ab49e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/110\"\u003e#110\u003c/a\u003e from mosquito/fix/close-twice-and-textwrapper-read\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/955abe86f524ffcec09e435b0f17cf320562c9f0\"\u003e\u003ccode\u003e955abe8\u003c/code\u003e\u003c/a\u003e Bump markdown-pytest to ~0.6.5 and refresh other dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/3d8e378cd129aee38f90bf26ad34ae6f1baa9afe\"\u003e\u003ccode\u003e3d8e378\u003c/code\u003e\u003c/a\u003e Add free-threaded Python (3.13t, 3.14t) to the CI test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/31bd742607f0cf54675512e330378ce9b501e590\"\u003e\u003ccode\u003e31bd742\u003c/code\u003e\u003c/a\u003e Add closed attribute to AIOFile and file wrappers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/a84a46e64753664efe69d5ba5947bc92cdde5595\"\u003e\u003ccode\u003ea84a46e\u003c/code\u003e\u003c/a\u003e Fix TextFileWrapper.read() returning more characters than requested\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.git...\n\n_Description has been truncated_","html_url":"https://github.com/aws-solutions-library-samples/guidance-for-game-backend-and-infrastructure-agentic-workflows/pull/385","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-solutions-library-samples%2Fguidance-for-game-backend-and-infrastructure-agentic-workflows/issues/385","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/385/packages"},{"uuid":"5374880918","node_id":"PR_kwDOT_4wBc8AAAABChgY7g","number":10,"state":"open","title":"chore(deps): bump websocket-client from 1.9.0 to 1.9.2 in /backend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-07T12:47:15.000Z","updated_at":"2026-09-07T12:47:16.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.9.0 to 1.9.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.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=websocket-client\u0026package-manager=pip\u0026previous-version=1.9.0\u0026new-version=1.9.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/AzesmF/potok-app/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzesmF%2Fpotok-app/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"},{"uuid":"5360599527","node_id":"PR_kwDOGywluc8AAAABCWdJSw","number":2552,"state":"open","title":"Bump the pip-updates group across 1 directory with 2 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T20:04:27.000Z","updated_at":"2026-09-05T20:04:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-updates","update_count":2,"packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"boto3","old_version":"1.43.75","new_version":"1.43.87","repository_url":"https://github.com/boto/boto3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-updates group with 2 updates in the /tests directory: [websocket-client](https://github.com/websocket-client/websocket-client) and [boto3](https://github.com/boto/boto3).\n\nUpdates `websocket-client` from 1.9.0 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.75 to 1.43.87\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5740c2e1387ccd20b7028361a1d3b3e766b7f0e\"\u003e\u003ccode\u003ed5740c2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.87'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/316b72cad4fd915c6e6a2e081336a1a473018a72\"\u003e\u003ccode\u003e316b72c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.87\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/17409b462b0111734cfde68b5d90730b7a5d34e2\"\u003e\u003ccode\u003e17409b4\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/81ae04772b0cb5ef0547f19f52d61836677f8569\"\u003e\u003ccode\u003e81ae047\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.86'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0e52e63f32af72a113d6c49c8084500b48010c74\"\u003e\u003ccode\u003e0e52e63\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.86' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/938cd05abce739ff491c302a269e628f9de72849\"\u003e\u003ccode\u003e938cd05\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.86\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c20fb35d514719a0cbff10fc85d7723af7137ca7\"\u003e\u003ccode\u003ec20fb35\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/eec256acb020f2027ec223c64f1ffc7dec74983c\"\u003e\u003ccode\u003eeec256a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.85'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/11ef970f9b3525d0505500fc8c99f2463c45da19\"\u003e\u003ccode\u003e11ef970\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.85' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/359c9b73be0ff585805e71af8ecf0602262aa4ad\"\u003e\u003ccode\u003e359c9b7\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.85\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.75...1.43.87\"\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/warp-tech/warpgate/pull/2552","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/warp-tech%2Fwarpgate/issues/2552","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2552/packages"},{"uuid":"5359719805","node_id":"PR_kwDOR9i09M8AAAABCVx5cA","number":517,"state":"open","title":"chore(deps): bump the patch-and-minor group with 189 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T17:33:20.000Z","updated_at":"2026-09-05T17:33:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-and-minor","update_count":189,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/agronholm/anyio"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"idna","old_version":"3.10","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.2.1","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"aiohttp","old_version":"3.13.3","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"wheel","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"authlib","old_version":"1.6.9","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"nltk","old_version":"3.9.1","new_version":"3.10.3","repository_url":"https://github.com/nltk/nltk"},{"name":"pyjwt","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tornado","old_version":"6.5.5","new_version":"6.5.8","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"fastapi","old_version":"0.111.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"alembic","old_version":"1.18.4","new_version":"1.19.1","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"arq","old_version":"0.27.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.1","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.15.0"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"boto3","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/botocore"},{"name":"build","old_version":"1.3.0","new_version":"1.6.0","repository_url":"https://github.com/pypa/build"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"chromadb","old_version":"1.0.15","new_version":"1.5.9","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.2.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"colorlog","old_version":"6.9.0","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cross-web","old_version":"0.4.1","new_version":"0.7.0","repository_url":"https://github.com/usecross/cross-web"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"discord-py","old_version":"2.5.2","new_version":"2.7.1","repository_url":"https://github.com/Rapptz/discord.py"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fabric","old_version":"3.2.2","new_version":"3.2.3","repository_url":"https://github.com/fabric/fabric"},{"name":"fakeredis","old_version":"2.33.0","new_version":"2.37.1","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"feedparser","old_version":"6.0.11","new_version":"6.0.14","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"filelock","old_version":"3.20.3","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.6.1","repository_url":"https://github.com/miguelgrinberg/flask-socketio"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"fsspec","old_version":"2026.3.0","new_version":"2026.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geographiclib","old_version":"2.0","new_version":"2.1","repository_url":"https://github.com/geographiclib/geographiclib-python"},{"name":"geopy","old_version":"2.4.1","new_version":"2.5.0","repository_url":"https://github.com/geopy/geopy"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.61","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"google-auth","old_version":"2.40.3","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"graphql-core","old_version":"3.2.8","new_version":"3.2.12","repository_url":"https://github.com/graphql-python/graphql-core"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.5","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.74.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httptools","old_version":"0.6.4","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jiter","old_version":"0.10.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.1","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.25.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langgraph","old_version":"1.1.0","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.0.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.13","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.1","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.10.5","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.3.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msgpack","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.3","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.0.1","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"networkx","old_version":"3.5","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.3.2","new_version":"2.5.2","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.22.1","new_version":"1.29.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.98.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-distro","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pathspec","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pip-tools","old_version":"7.5.3","new_version":"7.6.1","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"platformdirs","old_version":"4.9.4","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.3.2","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"py-cord","old_version":"2.6.1","new_version":"2.8.1","repository_url":"https://github.com/Pycord-Development/pycord"},{"name":"pyasn1","old_version":"0.6.3","new_version":"0.6.4","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pybase64","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pylint","old_version":"4.0.5","new_version":"4.0.8","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypika","old_version":"0.48.9","new_version":"0.51.1","repository_url":"https://github.com/kayak/pypika"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"python-engineio","old_version":"4.12.2","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"python-socketio","old_version":"5.14.0","new_version":"5.16.4","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"qiskit","old_version":"2.3.1","new_version":"2.5.2","repository_url":"https://github.com/Qiskit/qiskit"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"ruamel-yaml","old_version":"0.18.14","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"rustworkx","old_version":"0.17.1","new_version":"0.18.1","repository_url":"https://github.com/Qiskit/rustworkx"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"safehttpx","old_version":"0.1.6","new_version":"0.1.7","repository_url":"https://github.com/gradio-app/safehttpx"},{"name":"scikit-learn","old_version":"1.7.1","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.12.0","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"smmap","old_version":"5.0.2","new_version":"5.0.3","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"soupsieve","old_version":"2.7","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"stevedore","old_version":"5.4.1","new_version":"5.9.1"},{"name":"strawberry-graphql","old_version":"0.312.3","new_version":"0.327.1","repository_url":"https://github.com/sponsors/strawberry-graphql"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tqdm","old_version":"4.66.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.16.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260712","repository_url":"https://github.com/python/typeshed"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.4","repository_url":"https://github.com/regebro/tzlocal"},{"name":"uuid-utils","old_version":"0.14.1","new_version":"0.17.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"yarl","old_version":"1.20.1","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"safety","old_version":"3.2.0","new_version":"3.8.1","repository_url":"https://github.com/pyupio/safety"},{"name":"opentelemetry-instrumentation-celery","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langchain-community","old_version":"0.3.5","new_version":"0.4.2","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"langserve","old_version":"0.2.1","new_version":"0.3.3","repository_url":"https://github.com/langchain-ai/langserve"},{"name":"autogen","old_version":"0.5.0","new_version":"0.14.1","repository_url":"https://github.com/ag2ai/ag2classic"},{"name":"eth-account","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/ApeWorX/eth-account"},{"name":"eth-keys","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/ApeWorX/eth-keys"},{"name":"semgrep","old_version":"1.92.0","new_version":"1.176.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"pytest-benchmark","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"accelerate","old_version":"1.10.0","new_version":"1.14.0","repository_url":"https://github.com/huggingface/accelerate"},{"name":"bitsandbytes","old_version":"0.46.1","new_version":"0.50.2","repository_url":"https://github.com/bitsandbytes-foundation/bitsandbytes"},{"name":"langchain-text-splitters","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.7.16","new_version":"0.12.1","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tokenizers","old_version":"0.21.4","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.2.0","new_version":"2.14.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"torchvision","old_version":"0.17.0","new_version":"0.29.0","repository_url":"https://github.com/pytorch/vision"},{"name":"torchaudio","old_version":"2.2.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/audio"},{"name":"scikit-image","old_version":"0.22.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"wyn-wav2lip","old_version":"0.1.0","new_version":"0.2.3"},{"name":"face-alignment","old_version":"1.4.1","new_version":"1.5.0","repository_url":"https://github.com/1adrianb/face-alignment"},{"name":"azure-cognitiveservices-speech","old_version":"1.35.0","new_version":"1.51.2"},{"name":"supabase","old_version":"2.3.4","new_version":"2.31.0","repository_url":"https://github.com/supabase/supabase-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-and-minor group with 189 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.14.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.5.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.19` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.2.1` | `0.16.5` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.26.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.3` | `3.14.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.2` | `0.48.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.9` | `1.8.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.10.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.0` | `2.13.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.32` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.5` | `6.5.8` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.0` | `0.141.1` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.19.1` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [arq](https://github.com/python-arq/arq) | `0.27.0` | `0.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.15.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [boto3](https://github.com/boto/boto3) | `1.42.64` | `1.43.86` |\n| [botocore](https://github.com/boto/botocore) | `1.42.64` | `1.43.86` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.6.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.15` | `1.5.9` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.5.0` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.9.0` | `6.12.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.0` |\n| [cross-web](https://github.com/usecross/cross-web) | `0.4.1` | `0.7.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [discord-py](https://github.com/Rapptz/discord.py) | `2.5.2` | `2.7.1` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fabric](https://github.com/fabric/fabric) | `3.2.2` | `3.2.3` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.33.0` | `2.37.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.11` | `6.0.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.32.5` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.5` |\n| [flask-socketio](https://github.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.6.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.64.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.3.0` | `2026.7.0` |\n| [geographiclib](https://github.com/geographiclib/geographiclib-python) | `2.0` | `2.1` |\n| [geopy](https://github.com/geopy/geopy) | `2.4.1` | `2.5.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.61` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.40.3` | `2.57.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.2` |\n| [graphql-core](https://github.com/graphql-python/graphql-core) | `3.2.8` | `3.2.12` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.5` |\n| [grpcio](https://github.com/grpc/grpc) | `1.74.0` | `1.83.1` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.4.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.8.0` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.10.0` | `0.16.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.6.0` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.5.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.1.0` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.0.1` | `4.2.0` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.8` | `1.1.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.13` | `0.4.4` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.4` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.1` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.5` | `3.11.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.3.0` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.2` | `1.2.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.3` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.0.1` | `2.25.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.2` | `2.5.2` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.22.1` | `1.29.0` |\n| [openai](https://github.com/openai/openai-python) | `1.98.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.65b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.1.0` | `1.1.1` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.3` | `7.6.1` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.4` | `4.11.7` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.5.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [py-cord](https://github.com/Pycord-Development/pycord) | `2.6.1` | `2.8.1` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.3` | `0.6.4` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.2` | `1.5.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.10.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.5` | `4.0.8` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pypika](https://github.com/kayak/pypika) | `0.48.9` | `0.51.1` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.2` | `4.14.0` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.4` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.0` | `5.16.4` |\n| [qiskit](https://github.com/Qiskit/qiskit) | `2.3.1` | `2.5.2` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.6` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| ruamel-yaml | `0.18.14` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [rustworkx](https://github.com/Qiskit/rustworkx) | `0.17.1` | `0.18.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.19.2` |\n| [safehttpx](https://github.com/gradio-app/safehttpx) | `0.1.6` | `0.1.7` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.1` | `1.9.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.12.0` | `1.18.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.9.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.52` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.4.1` | `5.9.1` |\n| [strawberry-graphql](https://github.com/sponsors/strawberry-graphql) | `0.312.3` | `0.327.1` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.13.3` | `0.15.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.66.1` | `4.70.0` |\n| [typer](https://github.com/fastapi/typer) | `0.16.0` | `0.27.2` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260712` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.16.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.4` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.14.1` | `0.17.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.52.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.2.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.20.1` | `1.24.5` |\n| [safety](https://github.com/pyupio/safety) | `3.2.0` | `3.8.1` |\n| [opentelemetry-instrumentation-celery](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.5` | `0.4.2` |\n| [langserve](https://github.com/langchain-ai/langserve) | `0.2.1` | `0.3.3` |\n| [autogen](https://github.com/ag2ai/ag2classic) | `0.5.0` | `0.14.1` |\n| [eth-account](https://github.com/ApeWorX/eth-account) | `0.13.0` | `0.14.0` |\n| [eth-keys](https://github.com/ApeWorX/eth-keys) | `0.7.1` | `0.8.0` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.92.0` | `1.176.0` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.1.0` | `5.3.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.167.1` |\n| [accelerate](https://github.com/huggingface/accelerate) | `1.10.0` | `1.14.0` |\n| [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes) | `0.46.1` | `0.50.2` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.1` | `1.1.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.7.16` | `0.12.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.8.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.4` | `0.23.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.14.0` |\n| [torchvision](https://github.com/pytorch/vision) | `0.17.0` | `0.29.0` |\n| [torchaudio](https://github.com/pytorch/audio) | `2.2.0` | `2.11.0` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.22.0` | `0.26.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.14.0` |\n| wyn-wav2lip | `0.1.0` | `0.2.3` |\n| [face-alignment](https://github.com/1adrianb/face-alignment) | `1.4.1` | `1.5.0` |\n| azure-cognitiveservices-speech | `1.35.0` | `1.51.2` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.3.4` | `2.31.0` |\n\nUpdates `anyio` from 4.9.0 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eByteReceiveStream.receive()\u003c/code\u003e implementations to raise a \u003ccode\u003eValueError\u003c/code\u003e when \u003ccode\u003emax_bytes\u003c/code\u003e is not a positive integer (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1191\"\u003e#1191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting \u003ccode\u003efloat(\u0026quot;inf\u0026quot;)\u003c/code\u003e when the limiter was instantiated outside of an event loop. The adapter setter checked for infinity by identity (\u003ccode\u003evalue is math.inf\u003c/code\u003e), so only the exact \u003ccode\u003emath.inf\u003c/code\u003e singleton was accepted, while every backend setter (using \u003ccode\u003emath.isinf()\u003c/code\u003e) accepts any positive infinity (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1189\"\u003e#1189\u003c/a\u003e; PR by \u003ca href=\"https://github.com/greymoth-jp\"\u003e\u003ccode\u003e@​greymoth-jp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eto_process.run_sync()\u003c/code\u003e deadlocking when the worker function writes enough data to \u003ccode\u003esys.stderr\u003c/code\u003e to fill the (undrained) pipe buffer. The worker process now redirects \u003ccode\u003esys.stderr\u003c/code\u003e to \u003ccode\u003eos.devnull\u003c/code\u003e as well, matching the documented behavior\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eTLSStream.wrap()\u003c/code\u003e matching an internationalized (unicode) host name against the peer certificate using IDNA 2003 (via the standard library) instead of IDNA 2008, which could cause the host name to be matched against the wrong certificate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1208\"\u003e#1208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.open_process()\u003c/code\u003e (and \u003ccode\u003erun_process()\u003c/code\u003e) ignoring the \u003ccode\u003eextra_groups\u003c/code\u003e argument, as it mistakenly passed the value of the \u003ccode\u003egroup\u003c/code\u003e argument instead (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1209\"\u003e#1209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.acquire_nowait()\u003c/code\u003e and \u003ccode\u003eCapacityLimiter.acquire_nowait_on_behalf_of()\u003c/code\u003e raising \u003ccode\u003etrio.WouldBlock\u003c/code\u003e instead of \u003ccode\u003eanyio.WouldBlock\u003c/code\u003e on the \u003ccode\u003etrio\u003c/code\u003e backend when there are no tokens available (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens (\u003ccode\u003eborrowed_tokens\u003c/code\u003e exceeding \u003ccode\u003etotal_tokens\u003c/code\u003e and \u003ccode\u003eavailable_tokens\u003c/code\u003e going negative) when a non-blocking acquire was made in the window between a token being released and the notified waiter resuming. The freed token is now reserved for the woken waiter right away, so the non-blocking acquire correctly raises \u003ccode\u003eWouldBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1170\"\u003e#1170\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed unnecessary CPU spin when delivering cancellation from \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio under certain conditions, including improper cancel scope nesting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1111\"\u003e#1111\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c384f99687c64c59ed8a11c3a0f11a2d57daff71\"\u003e\u003ccode\u003ec384f99\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dbba29d1ade7936f18fb71ba24aa92978673482a\"\u003e\u003ccode\u003edbba29d\u003c/code\u003e\u003c/a\u003e Fixed 100% CPU spin on cancel scope misuse (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6bbc6c33caabc13af5bc4256f745027cf8d5d7b8\"\u003e\u003ccode\u003e6bbc6c3\u003c/code\u003e\u003c/a\u003e Fix CapacityLimiter over-granting tokens on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1172\"\u003e#1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f82b2537cbbe98f3df3f295499056ab7de0b15b\"\u003e\u003ccode\u003e6f82b25\u003c/code\u003e\u003c/a\u003e Refactored TestTLSStream.test_receive_invalid_max_bytes() to be less flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/be24b0414f67f604bcbdd5ea3bcc56ab920d872e\"\u003e\u003ccode\u003ebe24b04\u003c/code\u003e\u003c/a\u003e Relaxed timeouts to fix test flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/81135065749b4f60c06619b9caaf0a11871c1ddf\"\u003e\u003ccode\u003e8113506\u003c/code\u003e\u003c/a\u003e Fix test flakiness caused by slow callback duration logging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1e988b617b69588e33fecb75e36a9837245f562f\"\u003e\u003ccode\u003e1e988b6\u003c/code\u003e\u003c/a\u003e Fixed CapacityLimiter raising trio.WouldBlock instead of anyio.WouldBlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44713f345cd29dd4e7d76553c134543a1296cc62\"\u003e\u003ccode\u003e44713f3\u003c/code\u003e\u003c/a\u003e Pin setup-uv to a commit sha across downstream jobs (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1b7301c8264b0d2e8d24a5788fd29e93dea4040\"\u003e\u003ccode\u003ef1b7301\u003c/code\u003e\u003c/a\u003e Fixed stderr writes in a worker subprocess causing a deadlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/212be93c2cf2c841e753e95e5e2c543ee7feca90\"\u003e\u003ccode\u003e212be93\u003c/code\u003e\u003c/a\u003e Fix flaky test_tcp_listener_same_port using a hardcoded port (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1206\"\u003e#1206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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/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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\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/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.26.0 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.2\u003c/h2\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.1\u003c/h2\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\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/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.0 (21st February, 2024)\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/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.26.0...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003ev3.18\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.17\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.16\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/03a9a11dd8aecd4fea742cabe20f4d3d9ed82abb\"\u003e\u003ccode\u003e03a9a11\u003c/code\u003e\u003c/a\u003e Release 3.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2d2a7ef0c59210a48407b3dde6d884933cecf093\"\u003e\u003ccode\u003e2d2a7ef\u003c/code\u003e\u003c/a\u003e Pre-release 3.19rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5cce1308d148019c5fa0febceafa13e99cdacfe7\"\u003e\u003ccode\u003e5cce130\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/268\"\u003e#268\u003c/a\u003e from kjd/fix-std3-regex-alert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/3914b75f3e4cbc11e59f92eeecdb16d10871e57f\"\u003e\u003ccode\u003e3914b75\u003c/code\u003e\u003c/a\u003e Split the STD3 disallowed-character range so uppercase is explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ce9fd98ac4073866db276e93834b259f2a5a4ac4\"\u003e\u003ccode\u003ece9fd98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/267\"\u003e#267\u003c/a\u003e from kjd/housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/809240c3cc9358c9c9c79b2d12ffe39e75ccfb0f\"\u003e\u003ccode\u003e809240c\u003c/code\u003e\u003c/a\u003e Fail CI when the license copyright year is behind the current year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d9e16c523d7d25dcc14100fa80f3e303404e09be\"\u003e\u003ccode\u003ed9e16c5\u003c/code\u003e\u003c/a\u003e Consolidate test fixtures, prune stale gitignore entries, and fix doc typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ef30feeed3a758e96286fdab0315a551f7f5e7d6\"\u003e\u003ccode\u003eef30fee\u003c/code\u003e\u003c/a\u003e Remove dead code and pare back superfluous comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b907913f854d26cc714f721c6c2cb626d41ac468\"\u003e\u003ccode\u003eb907913\u003c/code\u003e\u003c/a\u003e Tighten the version support and Unicode notes in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6204cbe343ef438df7c58bc80b94d0f960991d90\"\u003e\u003ccode\u003e6204cbe\u003c/code\u003e\u003c/a\u003e Ignore local build artifacts and stop packaging stray tooling config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.2.1 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/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.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\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/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://red...\n\n_Description has been truncated_","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/517","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/517","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/517/packages"},{"uuid":"5357446004","node_id":"PR_kwDOT0P7pc8AAAABCUDDgA","number":35,"state":"closed","title":"Bump the python-dependencies group across 1 directory with 51 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-06T11:02:12.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-05T10:58:03.000Z","updated_at":"2026-09-06T11:02:14.000Z","time_to_close":86649,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-dependencies","update_count":51,"packages":[{"name":"aiohttp","old_version":"3.10.9","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"cachetools","old_version":"7.1.7","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"charset-normalizer","old_version":"3.5.0","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"clang-format","old_version":"22.1.8","new_version":"23.1.0","repository_url":"https://github.com/ssciwr/clang-format-wheel"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cython","old_version":"3.2.9","new_version":"3.3.0","repository_url":"https://github.com/cython/cython"},{"name":"dask","old_version":"2026.7.1","new_version":"2026.8.0","repository_url":"https://github.com/dask/dask"},{"name":"django-allauth","old_version":"65.19.0","new_version":"65.19.2","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-debug-toolbar","old_version":"7.1.0","new_version":"8.0.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-guardian","old_version":"3.3.3","new_version":"3.4.0","repository_url":"https://github.com/django-guardian/django-guardian"},{"name":"faker","old_version":"40.36.0","new_version":"40.38.0","repository_url":"https://github.com/joke2k/faker"},{"name":"filelock","old_version":"3.32.2","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flit-core","old_version":"3.12.0","new_version":"4.0.2","repository_url":"https://github.com/pypa/flit"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"gitpython","old_version":"3.1.59","new_version":"3.1.61","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"googleapis-common-protos","old_version":"1.75.1","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.83.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.83.0","new_version":"1.83.1"},{"name":"hypothesis","old_version":"6.165.5","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"9.0.0","new_version":"9.0.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"linkify-it-py","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/tsutsu3/linkify-it-py"},{"name":"ml-dtypes","old_version":"0.5.4","new_version":"0.6.0","repository_url":"https://github.com/jax-ml/ml_dtypes"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"newrelic","old_version":"13.4.0","new_version":"13.5.0","repository_url":"https://github.com/newrelic/newrelic-python-agent"},{"name":"optree","old_version":"0.19.1","new_version":"0.20.0","repository_url":"https://github.com/metaopt/optree"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"platformdirs","old_version":"4.11.2","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"plotly","old_version":"6.9.0","new_version":"7.0.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"polars","old_version":"1.43.2","new_version":"1.44.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"prek","old_version":"0.4.13","new_version":"0.5.1","repository_url":"https://github.com/j178/prek"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pygtrie","old_version":"2.5.0","new_version":"2.6.1","repository_url":"https://github.com/mina86/pygtrie"},{"name":"pytest-benchmark","old_version":"5.2.3","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"pyzmq","old_version":"27.1.0","new_version":"27.2.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"ruff","old_version":"0.16.2","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"sqlalchemy","old_version":"1.3.18","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"svcs","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/hynek/svcs"},{"name":"sympy","old_version":"1.13.1","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"trio","old_version":"0.33.0","new_version":"0.34.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typer","old_version":"0.27.1","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zope-hookable","old_version":"8.2","new_version":"8.3","repository_url":"https://github.com/zopefoundation/zope.hookable"},{"name":"zope-i18nmessageid","old_version":"8.2","new_version":"8.3","repository_url":"https://github.com/zopefoundation/zope.i18nmessageid"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 51 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.10.9` | `3.14.3` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.7` | `7.1.8` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.0` | `3.5.1` |\n| [clang-format](https://github.com/ssciwr/clang-format-wheel) | `22.1.8` | `23.1.0` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cython](https://github.com/cython/cython) | `3.2.9` | `3.3.0` |\n| [dask](https://github.com/dask/dask) | `2026.7.1` | `2026.8.0` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.19.0` | `65.19.2` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.1.0` | `8.0.0` |\n| [django-guardian](https://github.com/django-guardian/django-guardian) | `3.3.3` | `3.4.0` |\n| [faker](https://github.com/joke2k/faker) | `40.36.0` | `40.38.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.32.2` | `3.32.5` |\n| [flit-core](https://github.com/pypa/flit) | `3.12.0` | `4.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.64.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.59` | `3.1.61` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.75.1` | `1.75.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.83.0` | `1.83.1` |\n| [grpcio-status](https://grpc.io) | `1.83.0` | `1.83.1` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.165.5` | `6.167.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `9.0.0` | `9.0.1` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [linkify-it-py](https://github.com/tsutsu3/linkify-it-py) | `2.1.0` | `2.2.0` |\n| [ml-dtypes](https://github.com/jax-ml/ml_dtypes) | `0.5.4` | `0.6.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n| [newrelic](https://github.com/newrelic/newrelic-python-agent) | `13.4.0` | `13.5.0` |\n| [optree](https://github.com/metaopt/optree) | `0.19.1` | `0.20.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.11.2` | `4.11.7` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.9.0` | `7.0.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.43.2` | `1.44.1` |\n| [prek](https://github.com/j178/prek) | `0.4.13` | `0.5.1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pygtrie](https://github.com/mina86/pygtrie) | `2.5.0` | `2.6.1` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.2.3` | `5.3.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.1.0` | `27.2.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.2` | `0.16.5` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `1.3.18` | `2.0.52` |\n| [svcs](https://github.com/hynek/svcs) | `26.1.0` | `26.2.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.1` | `1.14.0` |\n| [trio](https://github.com/python-trio/trio) | `0.33.0` | `0.34.0` |\n| [typer](https://github.com/fastapi/typer) | `0.27.1` | `0.27.2` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [zope-hookable](https://github.com/zopefoundation/zope.hookable) | `8.2` | `8.3` |\n| [zope-i18nmessageid](https://github.com/zopefoundation/zope.i18nmessageid) | `8.2` | `8.3` |\n\n\nUpdates `aiohttp` from 3.10.9 to 3.14.3\nUpdates `cachetools` from 7.1.7 to 7.1.8\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.1.8 (2026-08-31)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eReject negative \u003ccode\u003emaxsize\u003c/code\u003e in \u003ccode\u003eCache.__init__\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/tkem/cachetools/commit/4500e3d04288738d25acbb4973eb3c3e1bf41db9\"\u003e\u003ccode\u003e4500e3d\u003c/code\u003e\u003c/a\u003e Release v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/6e49bef559f20995d603830202afda0ea890bd1a\"\u003e\u003ccode\u003e6e49bef\u003c/code\u003e\u003c/a\u003e Update copilot instructions and review.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/defc58b02543ca0189fb37505827db4cc4e0565c\"\u003e\u003ccode\u003edefc58b\u003c/code\u003e\u003c/a\u003e Prepare v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/a39180bfced6e162614e23eaa9c3dc79d8ec74d6\"\u003e\u003ccode\u003ea39180b\u003c/code\u003e\u003c/a\u003e Remove somewhat superfluous and slightly incorrect documentation note regardi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/dd181c5a72a74fcc01045c17cc943f72cb521262\"\u003e\u003ccode\u003edd181c5\u003c/code\u003e\u003c/a\u003e Reject negative maxsize in Cache.\u003cstrong\u003einit\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b43b95360fd4a99f3bdd19ff87c2ef6f4c99e3d8\"\u003e\u003ccode\u003eb43b953\u003c/code\u003e\u003c/a\u003e Use monthly batches for dependabot updates.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tkem/cachetools/compare/v7.1.7...v7.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.5.0 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\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/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.5.0...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clang-format` from 22.1.8 to 23.1.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/b6a4827bc70fc81deb4b9e9c5f80dee047047f9c\"\u003e\u003ccode\u003eb6a4827\u003c/code\u003e\u003c/a\u003e Bump to v23.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/030534e36413c0cdb9a21b465cf76bb5f5de0dda\"\u003e\u003ccode\u003e030534e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ssciwr/clang-format-wheel/issues/164\"\u003e#164\u003c/a\u003e from ssciwr/dependabot/github_actions/actions/setup-p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/183480f8d9b7398853951cca1066da6e35cb902b\"\u003e\u003ccode\u003e183480f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ssciwr/clang-format-wheel/issues/163\"\u003e#163\u003c/a\u003e from ssciwr/dependabot/github_actions/pypa/gh-action-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/b179c1d24943dda7eff1db1d894155618caab0fb\"\u003e\u003ccode\u003eb179c1d\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/5c3c2fe4ea46f0e64bf81242044c53327567df06\"\u003e\u003ccode\u003e5c3c2fe\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ssciwr/clang-format-wheel/compare/v22.1.8...v23.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.4.2 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.4.2...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cython` from 3.2.9 to 3.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cython/cython/blob/master/CHANGES.rst\"\u003ecython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.3.0 (2026-08-22)\u003c/h1\u003e\n\u003cp\u003e(Complete changelog for the 3.3.0 release, including pre-releases.)\u003c/p\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePEP-634 Pattern Matching is implemented.\n(Github issue :issue:\u003ccode\u003e4029\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eexcept *\u003c/code\u003e (PEP-654 exception groups) is implemented for Python 3.11 and later.\n(Github issue :issue:\u003ccode\u003e4993\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnpacking in comprehensions (PEP-798) is implemented for list/set/dict comprehensions.\nIt is not yet available for generator expressions.\nOriginal patch by Morax.  (Github issue :issue:\u003ccode\u003e7898\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanges were made to adapt to Python 3.15 and its Limited API.\nThis does not yet cover \u003ccode\u003eabi3t\u003c/code\u003e.\n(Github issues :issue:\u003ccode\u003e6405\u003c/code\u003e, :issue:\u003ccode\u003e7190\u003c/code\u003e, :issue:\u003ccode\u003e7347\u003c/code\u003e, :issue:\u003ccode\u003e7348\u003c/code\u003e, :issue:\u003ccode\u003e7358\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCython now uses a new export/import naming scheme for fused C functions that\nincreases the resilience against seemingly compatible user code changes.\nThe original names are kept for backwards compatibility.\n(Github issue :issue:\u003ccode\u003e7656\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeclared container item types (e.g. \u003ccode\u003elist[float]\u003c/code\u003e or \u003ccode\u003etuple[atype, ...]\u003c/code\u003e)\nare now used by the type system.\n(Github issues :issue:\u003ccode\u003e7288\u003c/code\u003e, :issue:\u003ccode\u003e7798\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eType inference was improved for builtin Python types and their methods.\n(Github issues :issue:\u003ccode\u003e7536\u003c/code\u003e, :issue:\u003ccode\u003e7644\u003c/code\u003e, :issue:\u003ccode\u003e7887\u003c/code\u003e, :issue:\u003ccode\u003e7888\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eException base types are inferred for the target variable of multi-exception \u003ccode\u003eexcept\u003c/code\u003e\nclauses and for collections of exceptions.  Properties like \u003ccode\u003e.args\u003c/code\u003e and \u003ccode\u003e.context\u003c/code\u003e\nuse direct C access in CPython.\n(Github issue :issue:\u003ccode\u003e7783\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAnnotations on global variables are now used by type inference.\n(Github issue :issue:\u003ccode\u003e7877\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe feature set of the shared module can be selected at build time\nby listing named features to include or exclude.\nThis is an experimental configuration, subject to further improvements.\nFailures to include used features will currently result in import failures.\n(Github issue :issue:\u003ccode\u003e7759\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTo control the generation of the shared module, the \u003ccode\u003ecython\u003c/code\u003e command gained\na sub-command \u003ccode\u003ecython generate-shared pkg/modulename.c\u003c/code\u003e with additional options\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/cython/cython/commit/bcd04a2966842d80de6ecff4e68e8d892bec5ef7\"\u003e\u003ccode\u003ebcd04a2\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/dd3ab0af8ed2f9f628016aaaa7a23023658a2abc\"\u003e\u003ccode\u003edd3ab0a\u003c/code\u003e\u003c/a\u003e Prepare release of 3.3.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/294caa8693e2ddba4ef05058591a5a0a971c47cb\"\u003e\u003ccode\u003e294caa8\u003c/code\u003e\u003c/a\u003e Fix use of PyState_RemoveModule on module init failure path (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7906\"\u003e#7906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/a5d566ab4590c60d1c01d21c4816bbdaa4f21157\"\u003e\u003ccode\u003ea5d566a\u003c/code\u003e\u003c/a\u003e Build: Validate that all expected wheels were built.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/2dd996dc39a541b8bedbfa839913b5b946ad3be6\"\u003e\u003ccode\u003e2dd996d\u003c/code\u003e\u003c/a\u003e Build: Upgrade cibuildwheel.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/1b9e5ec4c800bae3ebbabcbc8013b22388a084e2\"\u003e\u003ccode\u003e1b9e5ec\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/148e945add05ee905172523ad3ccac93fc14fcc7\"\u003e\u003ccode\u003e148e945\u003c/code\u003e\u003c/a\u003e Avoid useless None checks in PyTypeTestNode. (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7904\"\u003eGH-7904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/82e43017f06644589ae1ae71fcf0693de5022308\"\u003e\u003ccode\u003e82e4301\u003c/code\u003e\u003c/a\u003e Fix type checks for exception base types. (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7903\"\u003e#7903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/207f4a96772228a7fe95689ed12239d6dae2bf41\"\u003e\u003ccode\u003e207f4a9\u003c/code\u003e\u003c/a\u003e Allow pipes in srctree tests (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7901\"\u003eGH-7901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/ef74612a84263f17ae2fa4624db920faf1059c9c\"\u003e\u003ccode\u003eef74612\u003c/code\u003e\u003c/a\u003e Update version for next release.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cython/cython/compare/3.2.9...3.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dask` from 2026.7.1 to 2026.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dask/dask/releases\"\u003edask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026.8.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix duplicated-word typos in docstrings \u003ca href=\"https://github.com/Sreekant13\"\u003e\u003ccode\u003e@​Sreekant13\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump scientific-python/issue-from-pytest-log-action from 1.6.0 to 1.6.1 @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12524\"\u003e#12524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: fix broken cross-references in expr-system docs \u003ca href=\"https://github.com/ritsth\"\u003e\u003ccode\u003e@​ritsth\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12494\"\u003e#12494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuppress Pandas4Warning in nightly CI caused by PyArrow \u003ca href=\"https://github.com/crusaderky\"\u003e\u003ccode\u003e@​crusaderky\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12498\"\u003e#12498\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pixi compatibility with upstream distributed \u003ca href=\"https://github.com/crusaderky\"\u003e\u003ccode\u003e@​crusaderky\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12497\"\u003e#12497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate guidance on AI-assisted PRs \u003ca href=\"https://github.com/crusaderky\"\u003e\u003ccode\u003e@​crusaderky\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12496\"\u003e#12496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump scientific-python/issue-from-pytest-log-action from 1.5.0 to 1.6.0 @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12490\"\u003e#12490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 8.2.0 to 8.3.0 @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12491\"\u003e#12491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee the \u003ca href=\"https://docs.dask.org/en/stable/changelog.html\"\u003eChangelog\u003c/a\u003e for more information.\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/dask/dask/commit/9dc535daa30d7d36d63d4a003b54342fbc7032db\"\u003e\u003ccode\u003e9dc535d\u003c/code\u003e\u003c/a\u003e Version 2026.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/817e5ffc1208346630b111860571024b0c6ec9bd\"\u003e\u003ccode\u003e817e5ff\u003c/code\u003e\u003c/a\u003e docs: fix duplicated-word typos in docstrings (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/ba5045e001d67decd6a83a0f50f666a5e3845250\"\u003e\u003ccode\u003eba5045e\u003c/code\u003e\u003c/a\u003e Bump scientific-python/issue-from-pytest-log-action from 1.6.0 to 1.6.1 (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12524\"\u003e#12524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/a54329156cd17a68ef081c83fdc2409ddb423426\"\u003e\u003ccode\u003ea543291\u003c/code\u003e\u003c/a\u003e docs: fix broken cross-references in expr-system docs (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12494\"\u003e#12494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/aac2ce21714d556d748951814622a8ea76f5a042\"\u003e\u003ccode\u003eaac2ce2\u003c/code\u003e\u003c/a\u003e Suppress Pandas4Warning in nightly CI caused by PyArrow (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12498\"\u003e#12498\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/fc8e30b97ec64932da96d8f482086e969c6feb71\"\u003e\u003ccode\u003efc8e30b\u003c/code\u003e\u003c/a\u003e Fix pixi compatibility with upstream distributed (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12497\"\u003e#12497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/b3e7ee14d93c0a75da846b9a04213eafc4040579\"\u003e\u003ccode\u003eb3e7ee1\u003c/code\u003e\u003c/a\u003e Update guidance on AI-assisted PRs (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12496\"\u003e#12496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/f42727f79859452d3c9c89a37b409024b58b61cd\"\u003e\u003ccode\u003ef42727f\u003c/code\u003e\u003c/a\u003e Bump scientific-python/issue-from-pytest-log-action from 1.5.0 to 1.6.0 (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12490\"\u003e#12490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/416e177459a78a9bcc1d20f8d21a6bb8d6e28327\"\u003e\u003ccode\u003e416e177\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 8.2.0 to 8.3.0 (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12491\"\u003e#12491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dask/dask/compare/2026.7.1...2026.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth` from 65.19.0 to 65.19.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.1.0 to 8.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles) and Geist (body text) fonts, an updated color palette, and per-panel navigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of \u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other \u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border accent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's logo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable scroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles, an \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in both themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the shadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's time, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one in its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked before the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was missing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the design interface of the toolbar by \u003ca href=\"https://github.com/VeldaKiara\"\u003e\u003ccode\u003e@​VeldaKiara\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2429\"\u003edjango-commons/django-debug-toolbar#2429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated example screenshot of the toolbar with the new design. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2446\"\u003edjango-commons/django-debug-toolbar#2446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typos in apps.py docstrings by \u003ca href=\"https://github.com/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTrack and display middleware time in the toolbar by \u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cache hit/miss reporting for \u003ccode\u003ecache.get()\u003c/code\u003e by \u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSquare the toolbar handle corners facing the viewport edge by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2460\"\u003edjango-commons/django-debug-toolbar#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow a single Refresh button in the History panel by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2459\"\u003edjango-commons/django-debug-toolbar#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument and test the USE_SHADOW_DOM setting by \u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\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/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.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/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0 (2026-09-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles)\nand Geist (body text) fonts, an updated color palette, and per-panel\nnavigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of\n\u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other\n\u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border\naccent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's\nlogo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable\nscroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles,\nan \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in\nboth themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the\nshadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's\ntime, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one\nin its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked\nbefore the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was\nmissing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\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/django-commons/django-debug-toolbar/commit/85b98c6a93e1ff906f07545e98d8e4085424d005\"\u003e\u003ccode\u003e85b98c6\u003c/code\u003e\u003c/a\u003e Version 8.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/8fb3fe874881b46e6490e60f78f47f2ef4bc13ec\"\u003e\u003ccode\u003e8fb3fe8\u003c/code\u003e\u003c/a\u003e Document and test the USE_SHADOW_DOM setting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3f748fc093684496d53561dacb0a98b4b0345873\"\u003e\u003ccode\u003e3f748fc\u003c/code\u003e\u003c/a\u003e Show a single Refresh button in the History panel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/19fce30bfeb2b1cb77515df9bc47549f2607d3c7\"\u003e\u003ccode\u003e19fce30\u003c/code\u003e\u003c/a\u003e Square the toolbar handle corners facing the viewport edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ff94889178bc247a79093375b12ea68ab509ac1b\"\u003e\u003ccode\u003eff94889\u003c/code\u003e\u003c/a\u003e Bump the minor-npm-dependencies group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/65f68543551f6747cc6e38977d7a0082a63287e9\"\u003e\u003ccode\u003e65f6854\u003c/code\u003e\u003c/a\u003e Bump py-cov-action/python-coverage-comment-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/c7dc154a68077273718d1b2751bc6a6f15c7e20a\"\u003e\u003ccode\u003ec7dc154\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/93e89b132420db582ef0465c8508a744b9bc05b7\"\u003e\u003ccode\u003e93e89b1\u003c/code\u003e\u003c/a\u003e Fix CI with spelling words and biome schema version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ecf3e1e7745993da27546c639d0652ff69a25791\"\u003e\u003ccode\u003eecf3e1e\u003c/code\u003e\u003c/a\u003e Make the cache discussion link open in a new tab.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/28996cc6050f55b0a57394ca954e1163030998f4\"\u003e\u003ccode\u003e28996cc\u003c/code\u003e\u003c/a\u003e Improve cache hit/miss reporting for cache.get()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...8.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-guardian` from 3.3.3 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-guardian/django-guardian/releases\"\u003edjango-guardian's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the github-actions 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/django-guardian/django-guardian/pull/1013\"\u003edjango-guardian/django-guardian#1013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix queryset filtering with annotations in get_objects_for_user by \u003ca href=\"https://github.com/Mohan17881\"\u003e\u003ccode\u003e@​Mohan17881\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1014\"\u003edjango-guardian/django-guardian#1014\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1012\"\u003edjango-guardian/django-guardian#1012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1015\"\u003edjango-guardian/django-guardian#1015\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/Mohan17881\"\u003e\u003ccode\u003e@​Mohan17881\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1014\"\u003edjango-guardian/django-guardian#1014\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.4...3.4.0\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.4...3.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the github-actions 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/django-guardian/django-guardian/pull/1007\"\u003edjango-guardian/django-guardian#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocumentation is refactored, ai rules are added by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/986\"\u003edjango-guardian/django-guardian#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to 3.3.4 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1011\"\u003edjango-guardian/django-guardian#1011\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.3...3.3.4\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.3...3.3.4\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/django-guardian/django-guardian/commit/bd0882169ee3df6a31d5718b3f848e7470694287\"\u003e\u003ccode\u003ebd08821\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1015\"\u003e#1015\u003c/a\u003e from django-guardian/version-update-3-4-0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/651d4a5359b12660debfbc47ef4735476743c880\"\u003e\u003ccode\u003e651d4a5\u003c/code\u003e\u003c/a\u003e Bump version to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/64f399087cd9d0b75a521e16df78efb63c50aa65\"\u003e\u003ccode\u003e64f3990\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1012\"\u003e#1012\u003c/a\u003e from django-guardian/987-missing-support-for-django-60\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/dff5a2df2b18f814c7747db9cff5d899ff0bfbfe\"\u003e\u003ccode\u003edff5a2d\u003c/code\u003e\u003c/a\u003e Fix ContentType.model overflow in orphan permission tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/d985175f9f592a906c00aac0c8296cd1718652ac\"\u003e\u003ccode\u003ed985175\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into 987-missing-support-for-django-60\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/a904b4b2e9bdb23a0d890fbf56b99d7d2bb32fb0\"\u003e\u003ccode\u003ea904b4b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1014\"\u003e#1014\u003c/a\u003e from Mohan17881/fix/992-queryset-annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/1d8af5bd56e29427d699e0c2c13a07feab271df5\"\u003e\u003ccode\u003e1d8af5b\u003c/code\u003e\u003c/a\u003e Apply pre-commit formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/20b6adab6f507d4a50d26b65835ce0c80d907d1a\"\u003e\u003ccode\u003e20b6ada\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix/992-queryset-annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/42d1031c46d7905e139c4e88495006eb5585e42b\"\u003e\u003ccode\u003e42d1031\u003c/code\u003e\u003c/a\u003e Fix queryset filtering with annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/b621d4e65965e8060aa12777918ac7f2527f4a29\"\u003e\u003ccode\u003eb621d4e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1013\"\u003e#1013\u003c/a\u003e from django-guardian/dependabot/github_actions/githu...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.3...3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.36.0 to 40.38.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.38.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.38.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.37.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.37.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.37.0...v40.38.0\"\u003ev40.38.0 - 2026-09-01\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esi_LK\u003c/code\u003e (Sinhala, Sri Lanka) person provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2430\"\u003e#2430\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RavinduPabasara\"\u003e\u003ccode\u003e@​RavinduPabasara\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.36.0...v40.37.0\"\u003ev40.37.0 - 2026-08-20\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: generate structurally valid Irish IBANs for \u003ccode\u003een_IE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2411\"\u003e#2411\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/CedricConday\"\u003e\u003ccode\u003e@​CedricConday\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd Pillow as an optional dependency (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2442\"\u003e#2442\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/suliuzh\"\u003e\u003ccode\u003e@​suliuzh\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/joke2k/faker/commit/59a6872a547248bb40cdd0f809089a605c68467f\"\u003e\u003ccode\u003e59a6872\u003c/code\u003e\u003c/a\u003e Bump version: 40.37.0 → 40.38.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2407c71270aa0fc1b3e7510e1872dc2d232dc238\"\u003e\u003ccode\u003e2407c71\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f6a8427a6481f81d1d45701338acde38c63e75ad\"\u003e\u003ccode\u003ef6a8427\u003c/code\u003e\u003c/a\u003e :lipstick: Format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce50bdef4bdc5f04e25d012566b14faf5fb2ec22\"\u003e\u003ccode\u003ece50bde\u003c/code\u003e\u003c/a\u003e Add step to check for existing issues or PRs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4ca9116ec2f9c86bc311aadd0110d3f976bb49a8\"\u003e\u003ccode\u003e4ca9116\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003esi_LK\u003c/code\u003e (Sinhala, Sri Lanka) person provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2430\"\u003e#2430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c5a00935f1eff78bf0258c8a45fb431747c46b48\"\u003e\u003ccode\u003ec5a0093\u003c/code\u003e\u003c/a\u003e mention pull request template in contributing doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4a464c8d7130e26b4c0e9749b039d10b5614c45e\"\u003e\u003ccode\u003e4a464c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.36.0 → 40.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f33e820a5237384c43718f2ec0bf60d82014db12\"\u003e\u003ccode\u003ef33e820\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/74efb07c529e826c3aa12508b204b80b180eba1f\"\u003e\u003ccode\u003e74efb07\u003c/code\u003e\u003c/a\u003e fix(en_IE): generate structurally valid Irish IBANs (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2411\"\u003e#2411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/d80d125d5c20d0572a26d5d617dbad647beb9343\"\u003e\u003ccode\u003ed80d125\u003c/code\u003e\u003c/a\u003e add Pillow as an optional dependency (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.36.0...v40.38.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.32.2 to 3.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.32.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(fork): report where a stalled fork stops by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/715\"\u003etox-dev/filelock#715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: say that mode is read-only in the thread-local section by \u003ca href=\"https://github.com/Gares95\"\u003e\u003ccode\u003e@​Gares95\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/716\"\u003etox-dev/filelock#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(lease): clear token after failed acquire by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\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/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix: retry transient denials on open and claim read by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/705\"\u003etox-dev/filelock#705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: deflake six scheduled-run failures by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/704\"\u003etox-dev/filelock#704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: cover a reclaimed private record for real by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/706\"\u003etox-dev/filelock#706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(fork): fork once the event loop has closed by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/714\"\u003etox-dev/filelock#714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore: batch dependency updates weekly on Tuesday by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/713\"\u003etox-dev/filelock#713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eescape the hostname every marker publishes by \u003ca href=\"https://github.com/dxbjavid\"\u003e\u003ccode\u003e@​dxbjavid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/709\"\u003etox-dev/filelock#709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(strict): deflake close-fault injections on graalpy by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/697\"\u003etox-dev/filelock#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📄 docs: publish llms.txt from the docs build by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/700\"\u003etox-dev/filelock#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(fork): survive audit events during interpreter shutdown by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/703\"\u003etox-dev/filelock#703\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.2...3.32.3\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.2...3.32.3\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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003cp\u003e.. towncrier-draft-entries:: Unreleased\u003c/p\u003e\n\u003cp\u003e.. towncrier release notes start\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.5 (2026-08-31)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSoftFileLease.token\u003c/code\u003e and \u003ccode\u003eAsyncSoftFileLease.token\u003c/code\u003e now read \u003ccode\u003eNone\u003c/code\u003e after a failed acquisition, so a contender\nturned away by a live holder no longer reports a token for a claim it never published. :pr:\u003ccode\u003e721\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocument that \u003ccode\u003emode\u003c/code\u003e has no setter: unlike \u003ccode\u003epoll_interval\u003c/code\u003e, \u003ccode\u003etimeout\u003c/code\u003e, \u003ccode\u003eblocking\u003c/code\u003e and \u003ccode\u003elifetime\u003c/code\u003e, it is fixed at construction and \u003ccode\u003elock.mode = ...\u003c/code\u003e raises \u003ccode\u003eAttributeError\u003c/code\u003e. :pr:\u003ccode\u003e716\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.4 (2026-08-23)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eStrictSoftFileLock\u003c/code\u003e always retries a claim read whose first attempt reports the claim as pending, so a first read\nthat itself outlasts the retry grace no longer fails closed on a claim it could have read. :pr:\u003ccode\u003e705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWindowsFileLock\u003c/code\u003e waits out a transient \u003ccode\u003eSTATUS_ACCESS_DENIED\u003c/code\u003e from \u003ccode\u003eNtCreateFile\u003c/code\u003e for up to half a second\nbefore raising \u003ccode\u003ePermissionError\u003c/code\u003e, since a peer unlinking the lock file as it releases can answer that for a moment; a\nreal denial still fails fast. :pr:\u003ccode\u003e705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEvery lock class now escapes the hostname it publishes, so a host whose \u003ccode\u003esocket.gethostname()\u003c/code\u003e carries a space, a\nnewline or a byte outside UTF-8 no longer writes a marker it reads back as malformed. Such a host used to lose a held\n\u003ccode\u003eSoftReadWriteLock\u003c/code\u003e read slot to a peer and could not take a write slot or a \u003ccode\u003eStrictSoftFileLock\u003c/code\u003e at all. :pr:\u003ccode\u003e709\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.3 (2026-08-13)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eThe fork-safety audit hook no longer prints \u003ccode\u003eException ignored in audit hook\u003c/code\u003e with a \u003ccode\u003eTypeError\u003c/code\u003e when an audit\nevent fires during interpreter shutdown, after CPython has already cleared the module globals. :pr:\u003ccode\u003e701\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.2 (2026-07-29)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eA \u003ccode\u003eSoftReadWriteLock\u003c/code\u003e or \u003ccode\u003eSoftFileLease\u003c/code\u003e acquire whose heartbeat thread fails to start now unlinks its marker and\nhands the claim back, instead of leaving an unrefreshed marker a peer takes while the caller believes it still holds\nthe lock. :pr:\u003ccode\u003e691\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.1 (2026-07-26)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eCanceling an \u003ccode\u003eAsyncSoftReadWriteLock\u003c/code\u003e acquire now releases the claim instead of leaking a marker whose heartbeat\nwedges every contender. :pr:\u003ccode\u003e686\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/tox-dev/filelock/commit/1585dfef9355a5c77d4a9498cc34d3a98056fdb9\"\u003e\u003ccode\u003e1585dfe\u003c/code\u003e\u003c/a\u003e Release 3.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/00177c32686e60bc5ef9875b5841867ea08d4558\"\u003e\u003ccode\u003e00177c3\u003c/code\u003e\u003c/a\u003e 🐛 fix(lease): clear token after failed acquire (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/721\"\u003e#721\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5aeb9b6a5fe1e86dcb1c44a927aefffd607b17b0\"\u003e\u003ccode\u003e5aeb9b6\u003c/code\u003e\u003c/a\u003e 📝 docs: say that mode is read-only in the thread-local section (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2634dd1dcc597b319770df027491f16d07662952\"\u003e\u003ccode\u003e2634dd1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/37dccf0276f6db1520db9e3482fdf0446c14276e\"\u003e\u003ccode\u003e37dccf0\u003c/code\u003e\u003c/a\u003e 🧪 test(fork): report where a stalled fork stops (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/715\"\u003e#715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/cb493d6684ed5d2f923384633c86fef12e29bce2\"\u003e\u003ccode\u003ecb493d6\u003c/code\u003e\u003c/a\u003e Release 3.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fe07a11a7133ddd104322eb79d3c59f966b4ba15\"\u003e\u003ccode\u003efe07a11\u003c/code\u003e\u003c/a\u003e escape the hostname every marker publishes (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/709\"\u003e#709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/232732f49ed9d230802f527ad60b5d5ad1202a56\"\u003e\u003ccode\u003e232732f\u003c/code\u003e\u003c/a\u003e 🔧 chore: batch dependency updates weekly on Tuesday (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/713\"\u003e#713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2966eb51431ff8ac19eb2bec4e0b67c328437c48\"\u003e\u003ccode\u003e2966eb5\u003c/code\u003e\u003c/a\u003e 🧪 test(fork): fork once the event loop has closed (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/714\"\u003e#714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/61511ebc1cc5d40b28f8584f1078e63f2d63fb02\"\u003e\u003ccode\u003e61511eb\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.32.2...3.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flit-core` from 3.12.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/flit/blob/main/doc/history.rst\"\u003eflit-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.0.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix invalid metadata files with \u003ccode\u003eImport-Name\u003c/code\u003e (:ghissue:\u003ccode\u003e813\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.0.1\u003c/h2\u003e\n\u003cp\u003eNo changes, but a new tag to trigger an upload to PyPI now that twine will\naccept it.\u003c/p\u003e\n\u003ch2\u003eVersion 4.0\u003c/h2\u003e\n\u003cp\u003eThis version contains breaking changes, but most projects which are already\nusing the \u003ccode\u003e[project]\u003c/code\u003e table for metadata shouldn't be affected, and can simply\nchange the \u003ccode\u003eflit_core \u0026lt;4\u003c/code\u003e constraint to \u003ccode\u003e\u0026lt;5\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e[tool.flit.metadata]\u003c/code\u003e table is no longer used for project metadata\n(:ghpull:\u003ccode\u003e771\u003c/code\u003e). Use the newer :ref:\u003ccode\u003e[project] table \u0026lt;pyproject_toml_project\u0026gt;\u003c/code\u003e\ninstead (or if that is not possible, build with \u003ccode\u003eflit_core \u0026lt;4\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e:ref:\u003ccode\u003ebuild_cmd\u003c/code\u003e and :ref:\u003ccode\u003epublish_cmd\u003c/code\u003e no longer include files in the sdist\nbased on what is committed in git or Mercurial (:ghpull:\u003ccode\u003e772\u003c/code\u003e). These commands\nnow build packages more like Flit does when called as a backend by e.g.\n\u003ccode\u003epython -m build\u003c/code\u003e. Specify :ref:\u003ccode\u003esdist include \u0026amp; exclude patterns \u0026lt;pyproject_toml_sdist\u0026gt;\u003c/code\u003e instead (Flit can help to generate these), or pass\nthe \u003ccode\u003e--use-vcs\u003c/code\u003e option to get the old behaviour back.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflit_core\u003c/code\u003e now requires Python 3.8 or above (:ghpull:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003e--setup-py\u003c/code\u003e option to generate sdists containing a \u003ccode\u003esetup.py\u003c/code\u003e file\nis no longer available (:ghpull:\u003ccode\u003e776\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eMaking typing stubs packages with a \u003ccode\u003e-stubs\u003c/code\u003e suffix will now work\n(:ghpull:\u003ccode\u003e742\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe default glob patterns for license files have been extended to include\n\u003ccode\u003eNOTICE*\u003c/code\u003e and \u003ccode\u003eAUTHORS*\u003c/code\u003e (:ghpull:\u003ccode\u003e758\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elicense-files\u003c/code\u003e glob patterns can contain spaces (:ghpull:\u003ccode\u003e797\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix a bug where license files could be found twice on Windows (:ghpull:\u003ccode\u003e752\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe new \u003ccode\u003eImport-Name\u003c/code\u003e and \u003ccode\u003eImport-Namespace\u003c/code\u003e metadata fields (metadata 2.5)\nare now supported (:ghpull:\u003ccode\u003e774\u003c/code\u003e). In most cases no new input is required,\nas Flit will create this metadata automatically.\u003c/li\u003e\n\u003cli\u003eFix creating RECORD files when file names include commas (:ghpull:\u003ccode\u003e744\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003e--use-vcs\u003c/code\u003e option now correctly recognises git from inside a git\nworktree folder (:ghpull:\u003ccode\u003e799\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eOn Python 3.12 and above, \u003ccode\u003eflit build\u003c/code\u003e now uses the 'data' filter when\nextracting the just-created sdist prior to building a wheel (:ghpull:\u003ccode\u003e775\u003c/code\u003e).\nThis restricts some special features of tar files, but sdists are unlikely\nto use these features, and they would probably break in other scenarios if\nyou did.\u003c/li\u003e\n\u003cli\u003eThe vendorised \u003ccode\u003ereadme_renderer\u003c/code\u003e package was updated to version 44.0\n(:ghpull:\u003ccode\u003e760\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/pypa/flit/commit/60c0b3d97bf095fbdb7671a02e51f8d8aba2fb85\"\u003e\u003ccode\u003e60c0b3d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/flit/issues/814\"\u003e#814\u003c/a\u003e from pypa/i813\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/58e7f412d19e80d69999fab964e4b714e7fe521e\"\u003e\u003ccode\u003e58e7f41\u003c/code\u003e\u003c/a\u003e Bump version: 4.0.1 → 4.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/666e3c2aa432d3d9e97a0a30dae2c675d8b12855\"\u003e\u003ccode\u003e666e3c2\u003c/code\u003e\u003c/a\u003e Fix METADATA format issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/81ac51d4b858972c6951914422906b01320ab0a1\"\u003e\u003ccode\u003e81ac51d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/flit/issues/812\"\u003e#812\u003c/a\u003e from pypa/prepare-4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/41bdff139c9e52399463c6436d4b22dae0dbf153\"\u003e\u003ccode\u003e41bdff1\u003c/code\u003e\u003c/a\u003e Add release note about 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/ff5bfad3ad132910a95949d291f9d4e6be183e7f\"\u003e\u003ccode\u003eff5bfad\u003c/code\u003e\u003c/a\u003e Bump version: 4.0.0 → 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/8faf7341c038567851be8210fa1b54915792ba07\"\u003e\u003ccode\u003e8faf734\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6 to 7 (\u003ca href=\"https://redirect.github.com/pypa/flit/issues/807\"\u003e#807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/ef7f31925305a50bd097f06b913717192490ad44\"\u003e\u003ccode\u003eef7f319\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/flit/issues/800\"\u003e#800\u003c/a\u003e from pypa/prepare-4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/431fbafe1242995b13fb2e64d5334bc6d17561be\"\u003e\u003ccode\u003e431fbaf\u003c/code\u003e\u003c/a\u003e Remind people in release notes to allow flit_core \u0026lt;5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/38297e7d1603654b27637dcbde0f3d72d1f26d6b\"\u003e\u003ccode\u003e38297e7\u003c/code\u003e\u003c/a\u003e Version number -\u0026gt; 4.0.0\u003c/li\u003e\n\u003cli\u003eAdditional commits vi...\n\n_Description has been truncated_","html_url":"https://github.com/Winnetou/uv_repo/pull/35","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Winnetou%2Fuv_repo/issues/35","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35/packages"},{"uuid":"5354147888","node_id":"PR_kwDOSQ1-D88AAAABCRhy1Q","number":127,"state":"closed","title":"deps(deps): bump websocket-client from 1.9.0 to 1.9.2","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T23:42:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T23:39:41.000Z","updated_at":"2026-09-04T23:42:18.000Z","time_to_close":150,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.9.0 to 1.9.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.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=websocket-client\u0026package-manager=pip\u0026previous-version=1.9.0\u0026new-version=1.9.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/TopiTech/mistral_nex_stocks/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TopiTech%2Fmistral_nex_stocks/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"},{"uuid":"5350736909","node_id":"PR_kwDOTiCLEM8AAAABCOyeZw","number":12,"state":"open","title":"deps: bump the python-dependencies group across 19 directories with 25 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-04T16:46:05.000Z","updated_at":"2026-09-11T16:58:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python-dependencies","update_count":25,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"azure-identity","old_version":"1.23.0","new_version":"1.25.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"ruff","old_version":"0.14.9","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.18.2","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 8 updates in the /buswatch directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.141.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.52.4` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n\nBumps the python-dependencies group with 9 updates in the /dashboard directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [azure-mgmt-appcontainers](https://github.com/Azure/azure-sdk-for-python) | `4.0.0` | `5.0.0` |\n| [azure-mgmt-servicebus](https://github.com/Azure/azure-sdk-for-python) | `9.0.0` | `10.0.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.3.0` | `26.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_chemo_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_mock_receiver directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_phw_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_pims_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 9 updates in the /hl7_server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [hishel](https://github.com/karpetrosyan/hishel) | `1.1.8` | `1.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.16` | `3.19` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_subscription_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_replay_job directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_store_service directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.1` | `1.41.0` |\n\nBumps the python-dependencies group with 2 updates in the /shared_libs directory: [xmlschema](https://github.com/sissaschool/xmlschema) and [elementpath](https://github.com/sissaschool/elementpath).\nBumps the python-dependencies group with 3 updates in the /shared_libs/event_logger_lib directory: [azure-identity](https://github.com/Azure/azure-sdk-for-python), [azure-core](https://github.com/Azure/azure-sdk-for-python) and [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 3 updates in the /shared_libs/field_utils_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy) and [bandit](https://github.com/PyCQA/bandit).\nBumps the python-dependencies group with 5 updates in the /shared_libs/hl7_validation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [xmlschema](https://github.com/sissaschool/xmlschema) | `3.4.3` | `4.3.2` |\n| [elementpath](https://github.com/sissaschool/elementpath) | `4.8.0` | `5.1.4` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/message_bus_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 7 updates in the /shared_libs/metric_sender_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.1` | `1.9.4` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 5 updates in the /shared_libs/otel_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/transformer_base_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\n\nUpdates `fastapi` from 0.136.3 to 0.141.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \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 \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \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.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \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.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\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 \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \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.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\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/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.136.3...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `starlette` from 1.3.1 to 1.6.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.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes 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/starlette/pull/3431\"\u003eKludex/starlette#3431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions by \u003ca href=\"https://github.com/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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.5.1...1.6.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte Range like \u003ccode\u003ebytes=5-4\u003c/code\u003e by \u003ca href=\"https://github.com/nikolauspschuetz\"\u003e\u003ccode\u003e@​nikolauspschuetz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003eencode/starlette#3389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003eencode/starlette#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.5.0...1.5.1\"\u003ehttps://github.com/encode/starlette/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.0\u003c/h2\u003e\n\u003cp\u003eThis release is all about giving \u003ccode\u003eGZipMiddleware\u003c/code\u003e some love. 🗜️\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3418\"\u003eencode/starlette#3418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003eencode/starlette#3419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3420\"\u003eencode/starlette#3420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3421\"\u003eencode/starlette#3421\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.4.1...1.5.0\"\u003ehttps://github.com/encode/starlette/compare/1.4.1...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e in \u003ccode\u003eGZipResponder\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/starlette/pull/3415\"\u003eKludex/starlette#3415\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.4.0...1.4.1\"\u003ehttps://github.com/Kludex/starlette/compare/1.4.0...1.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLazily allocate GZipMiddleware compression resources 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/starlette/pull/3407\"\u003eKludex/starlette#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\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/starlette/pull/3411\"\u003eKludex/starlette#3411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOffload large GZip compression 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/starlette/pull/3410\"\u003eKludex/starlette#3410\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/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3334\"\u003eKludex/starlette#3334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lkk7\"\u003e\u003ccode\u003e@​lkk7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3359\"\u003eKludex/starlette#3359\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.3.1...1.4.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.3.1...1.4.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.6.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3431\"\u003e#3431\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e information via response extensions \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3130\"\u003e#3130\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.1 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte ranges in \u003ccode\u003eFileResponse\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003e#3389\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003e#3430\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3418\"\u003e#3418\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3421\"\u003e#3421\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003e#3419\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3420\"\u003e#3420\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e to 128 KiB in \u003ccode\u003eGZipResponder\u003c/code\u003e, keeping it usable without the new keyword argument \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3415\"\u003e#3415\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eOffload large GZip compression to a worker thread, keeping the event loop responsive. \u003ccode\u003eGZipMiddleware\u003c/code\u003e accepts a new \u003ccode\u003ethread_minimum_size\u003c/code\u003e parameter (default 128 KiB) controlling the minimum body chunk size compressed in a thread \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3410\"\u003e#3410\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\u003c/code\u003e, reducing memory usage during compression \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3411\"\u003e#3411\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLazily allocate \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression resources, avoiding compressor allocation for responses that are never compressed \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3407\"\u003e#3407\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/4f250d6b814587e20c5365f0a5f0c4d42bcb929f\"\u003e\u003ccode\u003e4f250d6\u003c/code\u003e\u003c/a\u003e Version 1.6.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9eea41ad3c26ad21b9bdfe4578c1cdad6c9b9ac2\"\u003e\u003ccode\u003e9eea41a\u003c/code\u003e\u003c/a\u003e Expose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/38f8999a229610b36f39d11f67d80515a15c6330\"\u003e\u003ccode\u003e38f8999\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3431\"\u003e#3431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c41236c03868fb3779a64101f4ea88cd47877e23\"\u003e\u003ccode\u003ec41236c\u003c/code\u003e\u003c/a\u003e Version 1.5.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3432\"\u003e#3432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9c500db197859dba4a8db13fa8e7d2c55de8152c\"\u003e\u003ccode\u003e9c500db\u003c/code\u003e\u003c/a\u003e Limit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3430\"\u003e#3430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/78ae82cad482fe66a73fb1217f0a6609b3f998f6\"\u003e\u003ccode\u003e78ae82c\u003c/code\u003e\u003c/a\u003e Reject inverted single-byte Range like bytes=5-4 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c1d6edaf43920104d4389e983c3e0314f6af14cf\"\u003e\u003ccode\u003ec1d6eda\u003c/code\u003e\u003c/a\u003e chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/ee66ca48418780d6415d231851b31464febc32de\"\u003e\u003ccode\u003eee66ca4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 8 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/00d10167523f819d39d5ca36732348d58645a447\"\u003e\u003ccode\u003e00d1016\u003c/code\u003e\u003c/a\u003e fix(tests): skip test_staticfiles_filename_too_long on Windows where os.pathc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/d96887ea7b49db3d1d15994be6438c7fe99936f4\"\u003e\u003ccode\u003ed96887e\u003c/code\u003e\u003c/a\u003e Add Pydantic Logfire banner to the docs (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3428\"\u003e#3428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.3.1...1.6.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.37.0 to 0.52.4\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.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\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\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.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-identity` from 1.23.0 to 1.25.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/a989ea467731265fdf097b622ba254703187746b\"\u003e\u003ccode\u003ea989ea4\u003c/code\u003e\u003c/a\u003e [Identity] Prep patch release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/79728834e7f38018d372860cf9117bf51d9ed417\"\u003e\u003ccode\u003e7972883\u003c/code\u003e\u003c/a\u003e [Identity] Adjust refresh logic (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45496\"\u003e#45496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/04764a9a8a0cb59aab6421b41152246853dfcfe8\"\u003e\u003ccode\u003e04764a9\u003c/code\u003e\u003c/a\u003e add psscript to convert apiview json files to md (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45589\"\u003e#45589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/50e01659d7204865dfa07c5ece1019ed9a229b4f\"\u003e\u003ccode\u003e50e0165\u003c/code\u003e\u003c/a\u003e Sync eng/common directory with azure-sdk-tools for PR 14461 (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45646\"\u003e#45646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5333117e0e181404ff4deaa757e9b6ef86dabf8b\"\u003e\u003ccode\u003e5333117\u003c/code\u003e\u003c/a\u003e Add Bo to /sdk/ai/azure-ai-projects owner list (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45664\"\u003e#45664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/775d6942e4335422fc69da8e997a6069e356b104\"\u003e\u003ccode\u003e775d694\u003c/code\u003e\u003c/a\u003e Doc and automation updates for .github sync directory changes (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45630\"\u003e#45630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/c6e48b5cd71adf5728a5e2f33bc9f62fb221221f\"\u003e\u003ccode\u003ec6e48b5\u003c/code\u003e\u003c/a\u003e [Core] Prepare release (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45656\"\u003e#45656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/ae769c4e9379c8d309bffa5ccb76dcfba64e1f71\"\u003e\u003ccode\u003eae769c4\u003c/code\u003e\u003c/a\u003e Fix custom Memory Stores LRO poller operation (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45662\"\u003e#45662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/6074492844d670316eb171756483f1394a6c94c7\"\u003e\u003ccode\u003e6074492\u003c/code\u003e\u003c/a\u003e Add asset id none check in dt (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45618\"\u003e#45618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e1a986aeb7a8001bd3a4f336cf096c2b050aa480\"\u003e\u003ccode\u003ee1a986a\u003c/code\u003e\u003c/a\u003e Bump tar from 7.5.10 to 7.5.11 in /eng/common/tsp-client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45640\"\u003e#45640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.23.0...azure-identity_1.25.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websocket-client` from 1.9.0 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/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.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\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/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\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/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.9...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8aabf8435357eaffceca7237f371e293b8168e54\"\u003e\u003ccode\u003e8aabf84\u003c/code\u003e\u003c/a\u003e Drop +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4d8ad2ab5e86c99581b73775f2c00b9b8265b589\"\u003e\u003ccode\u003e4d8ad2a\u003c/code\u003e\u003c/a\u003e Update changelog for 2.3 release (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21728\"\u003e#21728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c2154672040c52e481f423854d104e6cf172585\"\u003e\u003ccode\u003e2c21546\u003c/code\u003e\u003c/a\u003e [mypyc] Update documentation of race conditions under free threading (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21726\"\u003e#21726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a9f62a3cf98a58a7a2607b7c81695802b39f5edc\"\u003e\u003ccode\u003ea9f62a3\u003c/code\u003e\u003c/a\u003e [mypyc] Make attribute access memory safe on free-threaded builds (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21705\"\u003e#21705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wi...\n\n_Description has been truncated_","html_url":"https://github.com/joelparkerhenderson/Integration-Hub-Beta/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelparkerhenderson%2FIntegration-Hub-Beta/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"5345405181","node_id":"PR_kwDOTby3is8AAAABCKf9yA","number":22,"state":"closed","title":"build(deps): bump the pip-minor-patch group across 1 directory with 72 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T07:14:54.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T07:19:48.000Z","updated_at":"2026-09-11T07:14:56.000Z","time_to_close":604506,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-minor-patch","update_count":72,"packages":[{"name":"langchain","old_version":"1.3.13","new_version":"1.3.18","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.3.5","new_version":"1.6.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pypdfium2","old_version":"5.11.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"duckdb","old_version":"1.5.4","new_version":"1.5.5","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"yfinance","old_version":"1.5.1","new_version":"1.7.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"akshare","old_version":"1.18.64","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"ccxt","old_version":"4.5.64","new_version":"4.5.76","repository_url":"https://github.com/ccxt/ccxt"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"sse-starlette","old_version":"3.4.5","new_version":"3.4.8","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"ddgs","old_version":"9.14.4","new_version":"9.16.0","repository_url":"https://github.com/deedy5/ddgs"},{"name":"matplotlib","old_version":"3.11.0","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"longbridge","old_version":"4.3.3","new_version":"4.5.0","repository_url":"https://github.com/longbridge/openapi"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cachetools","old_version":"7.1.4","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"caio","old_version":"0.9.25","new_version":"0.12.2","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"curl-cffi","old_version":"0.15.0","new_version":"0.16.2","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"cyclopts","old_version":"4.21.0","new_version":"4.23.3","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"griffelib","old_version":"2.1.0","new_version":"2.2.0"},{"name":"h2","old_version":"4.3.0","new_version":"4.4.1","repository_url":"https://github.com/python-hyper/h2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"9.0.0","new_version":"9.0.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"joserfc","old_version":"1.7.3","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.2","new_version":"0.11.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"llvmlite","old_version":"0.48.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.2","repository_url":"https://github.com/lxml/lxml"},{"name":"narwhals","old_version":"2.23.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numba","old_version":"0.66.0","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"opentelemetry-api","old_version":"1.43.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"peewee","old_version":"4.2.1","new_version":"4.4.0","repository_url":"https://github.com/coleifer/peewee"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyphen","old_version":"0.17.2","new_version":"0.18.1","repository_url":"https://github.com/Kozea/Pyphen"},{"name":"pytz","old_version":"2026.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.9.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"simplejson","old_version":"4.1.1","new_version":"4.1.2","repository_url":"https://github.com/simplejson/simplejson"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tiktoken","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"yarl","old_version":"1.24.2","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 72 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.13` | `1.3.18` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.1` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.3.5` | `1.6.0` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.11.0` | `5.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.4` | `1.5.5` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.1` | `1.7.0` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.64` | `1.18.94` |\n| [ccxt](https://github.com/ccxt/ccxt) | `4.5.64` | `4.5.76` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.5` | `3.4.8` |\n| [ddgs](https://github.com/deedy5/ddgs) | `9.14.4` | `9.16.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.0` | `3.11.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [longbridge](https://github.com/longbridge/openapi) | `4.3.3` | `4.5.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.4` | `7.1.8` |\n| [caio](https://github.com/mosquito/caio) | `0.9.25` | `0.12.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.15.0` | `0.16.2` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.21.0` | `4.23.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.64.0` |\n| griffelib | `2.1.0` | `2.2.0` |\n| [h2](https://github.com/python-hyper/h2) | `4.3.0` | `4.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `9.0.0` | `9.0.1` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.3` | `1.7.5` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.2` | `0.11.2` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.48.0` | `0.49.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.2` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.23.0` | `2.25.0` |\n| [numba](https://github.com/numba/numba) | `0.66.0` | `0.67.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.43.0` | `1.44.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [peewee](https://github.com/coleifer/peewee) | `4.2.1` | `4.4.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyphen](https://github.com/Kozea/Pyphen) | `0.17.2` | `0.18.1` |\n| [pytz](https://github.com/stub42/pytz) | `2026.2` | `2026.3.post1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.9.3` |\n| [simplejson](https://github.com/simplejson/simplejson) | `4.1.1` | `4.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.13.0` | `0.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.24.5` |\n\n\nUpdates `langchain` from 1.3.13 to 1.3.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain==1.3.18\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.17\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\nfix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.17\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.16\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.17 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39893\"\u003e#39893\u003c/a\u003e)\nfix(langchain): frame custom HITL rejection reasons (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39773\"\u003e#39773\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.16\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.15\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.16 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39806\"\u003e#39806\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfeat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39754\"\u003e#39754\u003c/a\u003e)\nfix(langchain): re-raise non-retryable exceptions in ModelRetryMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38960\"\u003e#38960\u003c/a\u003e)\nchore(langchain): update docs on error handling for json schema (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39632\"\u003e#39632\u003c/a\u003e)\nfix(langchain): preserve final repeated schema ordering (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39284\"\u003e#39284\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.15\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.14\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.15 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39595\"\u003e#39595\u003c/a\u003e)\nfeat(langchain): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eAgentMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38910\"\u003e#38910\u003c/a\u003e)\nchore(langchain): fix type errors in tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39589\"\u003e#39589\u003c/a\u003e)\nchore: bump h2 from 4.3.0 to 4.4.1 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39324\"\u003e#39324\u003c/a\u003e)\nfix(langchain): preserve history on \u003ccode\u003eSummarizationMiddleware\u003c/code\u003e summary failure (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39268\"\u003e#39268\u003c/a\u003e)\nfix(langchain): handle import error in \u003ccode\u003eLLMToolEmulator\u003c/code\u003e by \u003ccode\u003emodel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39290\"\u003e#39290\u003c/a\u003e)\nrefactor(langchain): update doc strings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39305\"\u003e#39305\u003c/a\u003e)\nfeat(langchain): add \u003ccode\u003estate_schema\u003c/code\u003e param to \u003ccode\u003ewrap_tool_call\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39292\"\u003e#39292\u003c/a\u003e)\nfix(langchain): re-export \u003ccode\u003ePIIMatch\u003c/code\u003e from \u003ccode\u003emiddleware\u003c/code\u003e package (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39291\"\u003e#39291\u003c/a\u003e)\nfix(langchain): restrict narrowed \u003ccode\u003eToolStrategy\u003c/code\u003e in bound tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39259\"\u003e#39259\u003c/a\u003e)\nfeat(langchain): filter internal middleware model calls from \u003ccode\u003emessages\u003c/code\u003e projection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39252\"\u003e#39252\u003c/a\u003e)\nchore: bump aiohttp from 3.14.1 to 3.14.3 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39242\"\u003e#39242\u003c/a\u003e)\nchore: bump cryptography from 48.0.1 to 50.0.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39240\"\u003e#39240\u003c/a\u003e)\ntest(langchain): regression test for shell tool + checkpointer msgpack error (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39267\"\u003e#39267\u003c/a\u003e)\nfix(langchain): handle malformed structured-output responses (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39245\"\u003e#39245\u003c/a\u003e)\nfix(langchain): prevent orphaned \u003ccode\u003etool_calls\u003c/code\u003e in \u003ccode\u003eToolCallLimitMiddleware\u003c/code\u003e end behavior (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39258\"\u003e#39258\u003c/a\u003e)\nfix(langchain): add aliases for bedrock mantle chat models (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39260\"\u003e#39260\u003c/a\u003e)\nfeat(langchain): add LangSmith provider to \u003ccode\u003einit_chat_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39224\"\u003e#39224\u003c/a\u003e)\nfix(langchain): clear stale \u003ccode\u003estructured_response\u003c/code\u003e between checkpointed turns (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39248\"\u003e#39248\u003c/a\u003e)\nfix(langchain): stop HITL approval gates from silently failing open (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39247\"\u003e#39247\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(langchain): propagate model middleware control flow (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39199\"\u003e#39199\u003c/a\u003e)\nfix(langchain): update Anthropic config test (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39172\"\u003e#39172\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/513e425fc0138fe5383ab28b638d5fc959b53f3f\"\u003e\u003ccode\u003e513e425\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39954\"\u003e#39954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/fd2fbd702bf429f820587584a4e5cdfbe57d5d34\"\u003e\u003ccode\u003efd2fbd7\u003c/code\u003e\u003c/a\u003e feat(anthropic): support 1.0 sdk (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39938\"\u003e#39938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b0fb33f919dd868f3db6262d883a84eb454697b0\"\u003e\u003ccode\u003eb0fb33f\u003c/code\u003e\u003c/a\u003e fix(perplexity): map Responses API cache tokens into input_token_details (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39\"\u003e#39\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain==1.3.13...langchain==1.3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.4.9 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.0\u003c/p\u003e\n\u003cp\u003erevert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\nrelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\nfix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\nrelease(core): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39832\"\u003e#39832\u003c/a\u003e)\nfeat(core): propagate gateway information on error path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39829\"\u003e#39829\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\nfix(core): resolve postponed annotations in \u003ccode\u003eStructuredTool._injected_args_keys\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39602\"\u003e#39602\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\nfix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict mappings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39750\"\u003e#39750\u003c/a\u003e)\nfix(core): make subprocess and temporary file tests portable on Windows (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39664\"\u003e#39664\u003c/a\u003e)\nfix(core): fail fast when tool schemas can't resolve forward refs during serialization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39570\"\u003e#39570\u003c/a\u003e)\ntest(core): avoid version-dependent runnable snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39705\"\u003e#39705\u003c/a\u003e)\nfix(core): require all nested properties for strict tool schemas (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39306\"\u003e#39306\u003c/a\u003e)\nfix(core): remove stale sync-stream \u003ccode\u003exfail\u003c/code\u003e [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39720\"\u003e#39720\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39723\"\u003e#39723\u003c/a\u003e)\nperf(core): Lazily import transformers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38037\"\u003e#38037\u003c/a\u003e)\nfix(core): accept non-dict Mapping values in mustache templates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39680\"\u003e#39680\u003c/a\u003e)\ndocs(core): clarify \u003ccode\u003eRunnable\u003c/code\u003e pipe coercion [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39075\"\u003e#39075\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39707\"\u003e#39707\u003c/a\u003e)\nfix(core): finalize chain-group runs on \u003ccode\u003eBaseException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39699\"\u003e#39699\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.5\u003c/p\u003e\n\u003cp\u003echore(core): release 1.5.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39704\"\u003e#39704\u003c/a\u003e)\nfeat(core): incorporate gateway metadata to traces (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39703\"\u003e#39703\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.5\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.4\u003c/p\u003e\n\u003cp\u003erelease(core): 1.5.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39655\"\u003e#39655\u003c/a\u003e)\nfix(core): make abatch_iterate consistent with batch_iterate for None and zero size (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39367\"\u003e#39367\u003c/a\u003e)\nfix(core): respect pydantic aliases when validating tool inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39572\"\u003e#39572\u003c/a\u003e)\nfix(core): issues in merging chunks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39535\"\u003e#39535\u003c/a\u003e)\nfix(core): handle v1 base model validation in async path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39576\"\u003e#39576\u003c/a\u003e)\nfix(core): handle tool descriptions for infer_schema=False (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39573\"\u003e#39573\u003c/a\u003e)\nfix(core): clear usage metadata callback on exceptions in context manager (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39616\"\u003e#39616\u003c/a\u003e)\nfix(core): handle falsy LLM and chat model caches (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39283\"\u003e#39283\u003c/a\u003e)\nchore(core): add httpx as an explicit dep (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39612\"\u003e#39612\u003c/a\u003e)\nfix(core): preserve non-str/non-dict items in \u003ccode\u003eDictPromptTemplate\u003c/code\u003e list values (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39588\"\u003e#39588\u003c/a\u003e)\nfix(core): raise ValueError when explicit tool_outputs length mismatches tool_calls in tool_example_to_messages (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39142\"\u003e#39142\u003c/a\u003e)\nfix(core): guard malformed Anthropic content blocks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38670\"\u003e#38670\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46\"\u003e\u003ccode\u003e4fe9d30\u003c/code\u003e\u003c/a\u003e chore(openai): fix tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39972\"\u003e#39972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c\"\u003e\u003ccode\u003e8fa38dc\u003c/code\u003e\u003c/a\u003e revert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372\"\u003e\u003ccode\u003e122030d\u003c/code\u003e\u003c/a\u003e release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.9...langchain-core==1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-openai` from 1.3.5 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-openai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-openai==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.2\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(openai): raise clear error on unexpected response type in \u003ccode\u003e_create_chat_result\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39731\"\u003e#39731\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39719\"\u003e#39719\u003c/a\u003e)\nfix(openai): preserve reasoning item boundaries (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39278\"\u003e#39278\u003c/a\u003e)\nrelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\nrelease(openai): 1.5.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39653\"\u003e#39653\u003c/a\u003e)\nfix(openai): preserve streamed encrypted reasoning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39635\"\u003e#39635\u003c/a\u003e)\nchore(infra): support langsmith gateway in CI (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39651\"\u003e#39651\u003c/a\u003e)\nrelease(openai): 1.5.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39629\"\u003e#39629\u003c/a\u003e)\nfeat(openai): support openai 3.0 SDK (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39613\"\u003e#39613\u003c/a\u003e)\nchore(partners): bump langgraph floor in openai and huggingface lockfiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39617\"\u003e#39617\u003c/a\u003e)\nrelease(openai): 1.4.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39485\"\u003e#39485\u003c/a\u003e)\nfix(openai): filter invalid tool calls from content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39366\"\u003e#39366\u003c/a\u003e)\nchore(openai): update guidance for responses API for OpenAI-compatible providers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39327\"\u003e#39327\u003c/a\u003e)\nchore(openai): update docstring for \u003ccode\u003einclude_response_headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39326\"\u003e#39326\u003c/a\u003e)\nrelease(openai): 1.4.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39322\"\u003e#39322\u003c/a\u003e)\nfix(openai): handle \u003ccode\u003eContextWindowExceededError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39300\"\u003e#39300\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(openai): filter langchain-generated content block IDs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39209\"\u003e#39209\u003c/a\u003e)\nfix(openai): preserve Responses \u003ccode\u003etext\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39204\"\u003e#39204\u003c/a\u003e)\nfix(openai): redact MCP \u003ccode\u003eauthorization\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39155\"\u003e#39155\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39050\"\u003e#39050\u003c/a\u003e)\nrelease(openai): 1.4.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39045\"\u003e#39045\u003c/a\u003e)\nfeat(anthropic,fireworks,openai): support langsmith gateway through env var (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38742\"\u003e#38742\u003c/a\u003e)\nfix(openai): correct \u003ccode\u003egpt-5.3-chat-latest\u003c/code\u003e profile (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39009\"\u003e#39009\u003c/a\u003e)\nrelease(openai): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38983\"\u003e#38983\u003c/a\u003e)\nchore: bump pillow from 12.2.0 to 12.3.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38999\"\u003e#38999\u003c/a\u003e)\nfeat(core): add \u003ccode\u003ereasoning_effort\u003c/code\u003e as a standard chat model parameter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38887\"\u003e#38887\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38797\"\u003e#38797\u003c/a\u003e)\nrelease(openai): 1.3.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38785\"\u003e#38785\u003c/a\u003e)\nfeat(openai): support explicit prompt caching (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38762\"\u003e#38762\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3478c28ef21435162cb67abbd2aaef67c7cd8981\"\u003e\u003ccode\u003e3478c28\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39763\"\u003e#39763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/420dfc94516f57a4d8662132a55bc532afbc6045\"\u003e\u003ccode\u003e420dfc9\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/85602c3676fbd51e098a01d7c66638719f529f84\"\u003e\u003ccode\u003e85602c3\u003c/code\u003e\u003c/a\u003e release(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/5c3538e83a24eaf819ecec066773a232dcd4a8e6\"\u003e\u003ccode\u003e5c3538e\u003c/code\u003e\u003c/a\u003e fix(core): resolve postponed annotations in `StructuredTool._injected_args_ke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9984a87fa5a6971c76cb12fc75b37ed74286b740\"\u003e\u003ccode\u003e9984a87\u003c/code\u003e\u003c/a\u003e feat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b3e9eef13c23c3a048f9846e1592b658f85f5f94\"\u003e\u003ccode\u003eb3e9eef\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39751\"\u003e#39751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ded2a1fb3c06a9562d9079e42099020ecaca4060\"\u003e\u003ccode\u003eded2a1f\u003c/code\u003e\u003c/a\u003e fix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/04ae7447d72e61841905a41b309856c5191452fb\"\u003e\u003ccode\u003e04ae744\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict ma...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/37f266278d780cd7ebdfbf1891ba92066192d687\"\u003e\u003ccode\u003e37f2662\u003c/code\u003e\u003c/a\u003e feat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2019bf5ebe50324c548f67c2666a804343f9b772\"\u003e\u003ccode\u003e2019bf5\u003c/code\u003e\u003c/a\u003e fix(openai): raise clear error on unexpected response type in `_create_chat_r...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-openai==1.3.5...langchain-openai==1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.9 to 1.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.11\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8533\"\u003e#8533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8532\"\u003e#8532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8502\"\u003e#8502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump cryptography from 48.0.1 to 50.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8528\"\u003e#8528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-sqlite): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8481\"\u003e#8481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8480\"\u003e#8480\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.10\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.9\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.10 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8462\"\u003e#8462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump jupyterlab from 4.5.9 to 4.5.10 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8440\"\u003e#8440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump setuptools from 80.9.0 to 83.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8435\"\u003e#8435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): type v3 stream_events return and native projections (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8389\"\u003e#8389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert(langgraph): delete TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8403\"\u003e#8403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): drop tags from TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8402\"\u003e#8402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8362\"\u003e#8362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump mistune from 3.2.1 to 3.3.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8317\"\u003e#8317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump soupsieve from 2.8.1 to 2.8.4 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8318\"\u003e#8318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(cli): allow langgraph-api versions up to 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8319\"\u003e#8319\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/644815f9e5bc52ad8f7a5227a456227e9c3e639b\"\u003e\u003ccode\u003e644815f\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7d6b5790ba84ce38c26f27a533d8419a31103c36\"\u003e\u003ccode\u003e7d6b579\u003c/code\u003e\u003c/a\u003e feat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d56666f7fbf0d380ad84cdf0cbe5aa48ab0cc086\"\u003e\u003ccode\u003ed56666f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 7 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/6a2822d3c77dad49a96718de73095f18717728be\"\u003e\u003ccode\u003e6a2822d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 5 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fde3068970679184b68d3d068a92c83c966a4888\"\u003e\u003ccode\u003efde3068\u003c/code\u003e\u003c/a\u003e release(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.9...1.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph-checkpoint` from 4.1.1 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph-checkpoint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph-checkpoint==4.2.0\u003c/h2\u003e\n\u003cp\u003eChanges since checkpoint==4.1.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8490\"\u003e#8490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(checkpoint,checkpoint-postgres): add opt-in omit_expired to skip expired rows on read (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8354\"\u003e#8354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8248\"\u003e#8248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8173\"\u003e#8173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: standardize package \u003ccode\u003eREADME.md\u003c/code\u003e structure (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8064\"\u003e#8064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: migrate Python type checking to ty (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8002\"\u003e#8002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the major group in /libs/checkpoint with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7967\"\u003e#7967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 3 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7960\"\u003e#7960\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f22af6248c93df08b553e9a264f6367797e0fddb\"\u003e\u003ccode\u003ef22af62\u003c/code\u003e\u003c/a\u003e chore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/658541c4960f329864a2523fc7d52427e8190bed\"\u003e\u003ccode\u003e658541c\u003c/code\u003e\u003c/a\u003e chore(checkpoint-postgres,checkpoint-sqlite): enable PLC0415 lint rule (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8540\"\u003e#8540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fb3d5f0399222504e015fe959e0e79fdc6e00a65\"\u003e\u003ccode\u003efb3d5f0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/01521c1b1cc4c035f64b9be40f2913285128f526\"\u003e\u003ccode\u003e01521c1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/cd62febcfae628d0930d1f7d3cb3b5919d4b800f\"\u003e\u003ccode\u003ecd62feb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 update...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/checkpoint==4.1.1...checkpoint==4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.11.0 to 5.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental \u003ccode\u003epyemscripten_2026_0_wasm32\u003c/code\u003e (Pyodide) build support added. \u003cem\u003eHowever, the resulting builds are flaky at runtime and subject to various types of random crashes. Freezes on shutdown have also been observed.\u003c/em\u003e\nWhile these issues persist, PyEmscripten wheels will not be uploaded to PyPI, but they are included in the release process and can be downloaded from GitHub on an experimental basis. If you can help track down and fix these issues, please reach out.\nNote: Our PyEmscripten wheels are bigger than usual, as they are built with debug symbols (a non-debug build is not considered useful at this stage).\u003c/li\u003e\n\u003cli\u003eFixed compatibility with Python 3.6 and 3.7.\n\u003cul\u003e\n\u003cli\u003eRuntime support was inadvertently broken due to a faulty cached property backport which held only one cache per class, not per instance as should have been.\nThe accidental loss of caches broke key assumptions of our autoclose logic, which relies on \u003ccode\u003ecached_property\u003c/code\u003e since 5.8.0. (Earlier versions that did not make extensive use of cached properties might work but have not been explicitly tested.)\u003c/li\u003e\n\u003cli\u003eThis release replaces both \u003ccode\u003efunctools.cached_property\u003c/code\u003e and the faulty \u003ccode\u003efunctools.lru_cache()\u003c/code\u003e based backport with our own, backward compatible \u003ccode\u003ecached_property\u003c/code\u003e implementation along with thorough documentation.\u003c/li\u003e\n\u003cli\u003eAlso, fixed setup (i.e. source installation) with Python 3.6 and its max available setup dependency versions (that is, \u003ccode\u003esetuptools\u003c/code\u003e 59). This had probably been broken for a long time. (A few non-breaking issues remain, e.g. for some reason we end up with a \u003ccode\u003epurelib\u003c/code\u003e directory, but it should be \u003ccode\u003eplatlib\u003c/code\u003e.)\u003c/li\u003e\n\u003cli\u003eBear in mind that ctypesgen continues to require Python \u003ccode\u003e\u0026gt;=3.8\u003c/code\u003e at this time (3.6 compat not being a priority in that case), but you can install with \u003ccode\u003e--no-build-isolation\u003c/code\u003e and let the reference bindings be used, or try adding ctypesgen's \u003ccode\u003esrc/\u003c/code\u003e to \u003ccode\u003ePYTHONPATH\u003c/code\u003e to bypass setup, and see how it goes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNote: We do not plan to (and practically cannot) keep up compatibility with outdated Python versions indefinitely.\u003c/strong\u003e In particular, setup compatibility may be dropped sooner or later in favor of contemporary Python packaging concepts, like migrating as much as possible to \u003ccode\u003epyproject.toml\u003c/code\u003e. That said, we are happy to restore compatibility at this point, and fix any \u003cem\u003eunintentional\u003c/em\u003e breakage.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eMANIFEST.in\u003c/code\u003e missing Windows spoof headers, which resulted in subtly incorrect bindings when installing from an sdist on Windows, as seen in test failures. (Release wheels have been unaffected and passed the test suite, so this issue went unnoticed for a while.)\u003c/li\u003e\n\u003cli\u003eBumped \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.1\u003c/code\u003e to \u003ccode\u003e2407.3\u003c/code\u003e. Made its setup python 3.6 compatible likewise (wheels should have worked before now). Changed versioning and release process so that CI no longer needs to push to the repository (may eventually become a blueprint for pypdfium2 itself). More documentation added, including \u003ccode\u003emanylinux2014\u003c/code\u003e POC.\u003c/li\u003e\n\u003cli\u003eInternal improvements (non-exhaustive):\n\u003cul\u003e\n\u003cli\u003eProperly clean up \u003ccode\u003e*.egg-info/\u003c/code\u003e and \u003ccode\u003ebuild/\u003c/code\u003e before packaging, to avoid mad file inclusion bugs (ran into this while working on setup include rules).\u003c/li\u003e\n\u003cli\u003eMigrated from requirements files to PEP 735 dependency groups (\u003ccode\u003epyproject.toml\u003c/code\u003e).\nRecent enough \u003ccode\u003epip\u003c/code\u003e should be available to Python \u0026gt;= 3.9. For compatibility with older versions, feel free to use \u003ccode\u003e./utils/misc/install_dep_group.py\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eApplied dependency cooldowns to internal callers of \u003ccode\u003epip install\u003c/code\u003e. Always use virtual environments in CI. Use lockfiles in sensitive areas (e.g. publish jobs).\u003c/li\u003e\n\u003cli\u003eRearranged \u0026amp; improved utilities. Cleaner distinction between \u003ccode\u003esetupsrc/\u003c/code\u003e and \u003ccode\u003eutils/\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eWork around persistent i686 container network issues by downgrading host runner to \u003ccode\u003eubuntu-24.04\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eLet \u003ccode\u003esetupsrc/\u003c/code\u003e share code from \u003ccode\u003esrc/\u003c/code\u003e through a \u003ccode\u003epypdfium2_cfg._shared\u003c/code\u003e submodule that can be added to \u003ccode\u003esys.path\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[manylinux_mipsle]\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\u003cblockquote\u003e\n\u003cp\u003e[!CAUTION]\nThe following builds are affected by known, major issues (e.g. endianness bugs, crashes, freezes) and are \u003cstrong\u003eNOT\u003c/strong\u003e considered ready for production use:\n\u003ccode\u003e[manylinux_s390x, musllinux_s390x, pyodide_wasm32]\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eCommit logs\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eCommits between \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.12.1\"\u003e\u003ccode\u003e5.12.1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.13.0\"\u003e\u003ccode\u003e5.13.0\u003c/code\u003e\u003c/a\u003e (latest commit first):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea4659102\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de35\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367a\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e78\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce0\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd619\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\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/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea465910\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de3\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e7\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd61\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3282e36375fd6e139f885ff634747ab0fe643e66\"\u003e\u003ccode\u003e3282e36\u003c/code\u003e\u003c/a\u003e Add zizmor to check step\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/07b84aaaa9c4c44429e0316c15c179b64c004d0a\"\u003e\u003ccode\u003e07b84aa\u003c/code\u003e\u003c/a\u003e Progress changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/6ec38d2aa64d59f02892ddf07f601bbdb5bbf53e\"\u003e\u003ccode\u003e6ec38d2\u003c/code\u003e\u003c/a\u003e git_net_additions: further improve fallback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b5cdd7c7fcd2c01cd7744b6824f977bbbcb831c6\"\u003e\u003ccode\u003eb5cdd7c\u003c/code\u003e\u003c/a\u003e git_net_additions: fancier fallback for binary files\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.11.0...5.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.4 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.5 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.5\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix numpy deprecations by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/505\"\u003educkdb/duckdb-python#505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix alias of \u003ccode\u003eDuckDBPyRelation.query\u003c/code\u003e (closes \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/468\"\u003e#468\u003c/a\u003e) by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/524\"\u003educkdb/duckdb-python#524\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/duckdb/duckdb-python/commit/b236c8194ed14c7a7c685e0534dde501cc855b3a\"\u003e\u003ccode\u003eb236c81\u003c/code\u003e\u003c/a\u003e Pin submodule to release hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/e6a21c5b5d65d741fafd5a7389c93b8b86a7f249\"\u003e\u003ccode\u003ee6a21c5\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/f637bf42683030cbb108268581b866f13cb75031\"\u003e\u003ccode\u003ef637bf4\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/4c5c73c63381bd0587fd42b41093c8f0abe9f17c\"\u003e\u003ccode\u003e4c5c73c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6fae28061912de88c3c0f6e6ad6b2f3fc5ee5235\"\u003e\u003ccode\u003e6fae280\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/d8d5f0a36003c9090ea9480cdefa8f4b4122fece\"\u003e\u003ccode\u003ed8d5f0a\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5d85f06025e83e3d2c69813acf4b2dc02bebc415\"\u003e\u003ccode\u003e5d85f06\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c3cbf8d9ca87cea3dfbb89bfa2102ff4ec530f00\"\u003e\u003ccode\u003ec3cbf8d\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/93418b65c6ca821d71d9a091fb5218ad55d8a4eb\"\u003e\u003ccode\u003e93418b6\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/24f1915b590e1e663a14c0bff9e49bf28ebece9b\"\u003e\u003ccode\u003e24f1915\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.4...v1.5.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.5.3 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.6.0 - 2026/08/31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix caching of functions whose source cannot be retrieved, such as functions\ndefined in a notebook cell. Their identity fell back to\n\u003ccode\u003estr(hash(func.__code__))\u003c/code\u003e, which is salted by \u003ccode\u003ePYTHONHASHSEED\u003c/code\u003e and so\ndiffered between processes. A worker reading the \u003ccode\u003efunc_code.py\u003c/code\u003e written by\nanother one concluded that the function had changed and wiped the whole\ncache directory for it, discarding results computed by its peers.\n\u003ccode\u003efunc_code.py\u003c/code\u003e is also no longer rewritten in place, so a reader can no\nlonger catch it half-written and draw the same conclusion.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1694\"\u003ejoblib/joblib#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop python 3.9 support. The oldest supported Python version\nis now Python 3.10.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1773\"\u003ejoblib/joblib#1773\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eeval_expr\u003c/code\u003e (used to evaluate the \u003ccode\u003epre_dispatch\u003c/code\u003e argument of\n\u003ccode\u003eParallel\u003c/code\u003e) to raise a \u003ccode\u003eValueError\u003c/code\u003e as documented instead of leaking a\n\u003ccode\u003eZeroDivisionError\u003c/code\u003e for expressions that divide or take a modulo by zero.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1810\"\u003ejoblib/joblib#1810\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMemorizedResult\u003c/code\u003e now forwards \u003ccode\u003emmap_mode\u003c/code\u003e to its store backend, so a\ncached array reconstructed from a location is memory-mapped as requested\ninstead of being loaded fully into memory.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1799\"\u003ejoblib/joblib#1799\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnvendor cloudpickle to more quickly benefit from maintenance releases\nof cloudpickle\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1775\"\u003ejoblib/joblib#1775\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMemory.cache\u003c/code\u003e for functions with a keyword-only argument that has a\ndefault declared before a keyword-only argument without a default.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1731\"\u003ejoblib/joblib#1731\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behavior of \u003ccode\u003efilter_args\u003c/code\u003e on some precise cases.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1800\"\u003ejoblib/joblib#1800\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a concurrency error that could happen with unordered generator.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1789\"\u003ejoblib/joblib#1789\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003edump()\u003c/code\u003e now accepts any input \u003ccode\u003eos.PathLike\u003c/code\u003e object to be consistent with\n\u003ccode\u003eload\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1812\"\u003ejoblib/joblib#1812\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe documentation now uses pydata sphinx theme. Furthermore, optional dependencies\n\u003ccode\u003etest\u003c/code\u003e and \u003ccode\u003edocs\u003c/code\u003e have been added to \u003ccode\u003epyproject.toml\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1774\"\u003ejoblib/joblib#1774\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky 3.6.0\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/joblib/joblib/commit/cd9a6b05fc4f2b1c8202eb62c4e863484f8cc099\"\u003e\u003ccode\u003ecd9a6b0\u003c/code\u003e\u003c/a\u003e Release 1.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1844\"\u003e#1844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/d873f972949d78166af6c945667c53f04d41fed6\"\u003e\u003ccode\u003ed873f97\u003c/code\u003e\u003c/a\u003e MNT vendor loky 3.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4ff61afd0849f18fddf5fbd137c1f02bfaed5223\"\u003e\u003ccode\u003e4ff61af\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/804f4725e1a27b1425c8aabcf7312ceb11c3a07d\"\u003e\u003ccode\u003e804f472\u003c/code\u003e\u003c/a\u003e FIX make func_code stable across processes when the source is unavailable (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/65cc49da449f70ffa73bc7c3c57fd418392f9...\n\n_Description has been truncated_","html_url":"https://github.com/NguyenPhan161206/vibe_trading/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NguyenPhan161206%2Fvibe_trading/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"},{"uuid":"5343342408","node_id":"PR_kwDOBFHcf88AAAABCI4ocA","number":2708,"state":"closed","title":"Update websocket-client requirement from !=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 to !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.2","user":"dependabot[bot]","labels":["cncf-cla: yes","size/XS","do-not-merge/release-note-label-needed","needs-kind","dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-09-08T01:31:53.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T02:02:44.000Z","updated_at":"2026-09-08T01:32:03.000Z","time_to_close":343749,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v0.32.0...v1.9.2\"\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/kubernetes-client/python/pull/2708","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-client%2Fpython/issues/2708","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2708/packages"},{"uuid":"5342335029","node_id":"PR_kwDOThpxhc8AAAABCIG1Aw","number":19,"state":"closed","title":"chore(deps): bump the pip-minor-patch group across 1 directory with 70 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-10T23:04:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-03T23:08:09.000Z","updated_at":"2026-09-10T23:04:25.000Z","time_to_close":604575,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip-minor-patch","update_count":70,"packages":[{"name":"langchain","old_version":"1.3.13","new_version":"1.3.18","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.3.5","new_version":"1.6.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pypdfium2","old_version":"5.11.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"duckdb","old_version":"1.5.4","new_version":"1.5.5","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"yfinance","old_version":"1.5.1","new_version":"1.7.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"akshare","old_version":"1.18.64","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"ccxt","old_version":"4.5.64","new_version":"4.5.76","repository_url":"https://github.com/ccxt/ccxt"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"sse-starlette","old_version":"3.4.5","new_version":"3.4.8","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"ddgs","old_version":"9.14.4","new_version":"9.16.0","repository_url":"https://github.com/deedy5/ddgs"},{"name":"matplotlib","old_version":"3.11.0","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cachetools","old_version":"7.1.4","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"caio","old_version":"0.10.2","new_version":"0.12.2","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"curl-cffi","old_version":"0.15.0","new_version":"0.16.2","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"cyclopts","old_version":"4.21.0","new_version":"4.23.3","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"griffelib","old_version":"2.1.0","new_version":"2.2.0"},{"name":"h2","old_version":"4.3.0","new_version":"4.4.1","repository_url":"https://github.com/python-hyper/h2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"joserfc","old_version":"1.7.3","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.2","new_version":"0.11.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"llvmlite","old_version":"0.48.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.2","repository_url":"https://github.com/lxml/lxml"},{"name":"narwhals","old_version":"2.23.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numba","old_version":"0.66.0","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"opentelemetry-api","old_version":"1.43.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"peewee","old_version":"4.2.1","new_version":"4.4.0","repository_url":"https://github.com/coleifer/peewee"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.5","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic-core","old_version":"2.47.0","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyphen","old_version":"0.17.2","new_version":"0.18.1","repository_url":"https://github.com/Kozea/Pyphen"},{"name":"pytz","old_version":"2026.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.8.31","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"simplejson","old_version":"4.1.1","new_version":"4.1.2","repository_url":"https://github.com/simplejson/simplejson"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tiktoken","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"yarl","old_version":"1.24.2","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 70 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.13` | `1.3.18` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.1` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.3.5` | `1.6.0` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.11.0` | `5.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.4` | `1.5.5` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.1` | `1.7.0` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.64` | `1.18.94` |\n| [ccxt](https://github.com/ccxt/ccxt) | `4.5.64` | `4.5.76` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.5` | `3.4.8` |\n| [ddgs](https://github.com/deedy5/ddgs) | `9.14.4` | `9.16.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.0` | `3.11.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.4` | `7.1.8` |\n| [caio](https://github.com/mosquito/caio) | `0.10.2` | `0.12.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.15.0` | `0.16.2` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.21.0` | `4.23.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.64.0` |\n| griffelib | `2.1.0` | `2.2.0` |\n| [h2](https://github.com/python-hyper/h2) | `4.3.0` | `4.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.3` | `1.7.5` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.2` | `0.11.2` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.48.0` | `0.49.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.2` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.23.0` | `2.25.0` |\n| [numba](https://github.com/numba/numba) | `0.66.0` | `0.67.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.43.0` | `1.44.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [peewee](https://github.com/coleifer/peewee) | `4.2.1` | `4.4.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.5` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.47.0` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyphen](https://github.com/Kozea/Pyphen) | `0.17.2` | `0.18.1` |\n| [pytz](https://github.com/stub42/pytz) | `2026.2` | `2026.3.post1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.8.31` |\n| [simplejson](https://github.com/simplejson/simplejson) | `4.1.1` | `4.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.13.0` | `0.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.24.5` |\n\n\nUpdates `langchain` from 1.3.13 to 1.3.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain==1.3.18\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.17\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\nfix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.17\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.16\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.17 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39893\"\u003e#39893\u003c/a\u003e)\nfix(langchain): frame custom HITL rejection reasons (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39773\"\u003e#39773\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.16\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.15\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.16 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39806\"\u003e#39806\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfeat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39754\"\u003e#39754\u003c/a\u003e)\nfix(langchain): re-raise non-retryable exceptions in ModelRetryMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38960\"\u003e#38960\u003c/a\u003e)\nchore(langchain): update docs on error handling for json schema (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39632\"\u003e#39632\u003c/a\u003e)\nfix(langchain): preserve final repeated schema ordering (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39284\"\u003e#39284\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.15\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.14\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.15 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39595\"\u003e#39595\u003c/a\u003e)\nfeat(langchain): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eAgentMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38910\"\u003e#38910\u003c/a\u003e)\nchore(langchain): fix type errors in tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39589\"\u003e#39589\u003c/a\u003e)\nchore: bump h2 from 4.3.0 to 4.4.1 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39324\"\u003e#39324\u003c/a\u003e)\nfix(langchain): preserve history on \u003ccode\u003eSummarizationMiddleware\u003c/code\u003e summary failure (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39268\"\u003e#39268\u003c/a\u003e)\nfix(langchain): handle import error in \u003ccode\u003eLLMToolEmulator\u003c/code\u003e by \u003ccode\u003emodel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39290\"\u003e#39290\u003c/a\u003e)\nrefactor(langchain): update doc strings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39305\"\u003e#39305\u003c/a\u003e)\nfeat(langchain): add \u003ccode\u003estate_schema\u003c/code\u003e param to \u003ccode\u003ewrap_tool_call\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39292\"\u003e#39292\u003c/a\u003e)\nfix(langchain): re-export \u003ccode\u003ePIIMatch\u003c/code\u003e from \u003ccode\u003emiddleware\u003c/code\u003e package (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39291\"\u003e#39291\u003c/a\u003e)\nfix(langchain): restrict narrowed \u003ccode\u003eToolStrategy\u003c/code\u003e in bound tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39259\"\u003e#39259\u003c/a\u003e)\nfeat(langchain): filter internal middleware model calls from \u003ccode\u003emessages\u003c/code\u003e projection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39252\"\u003e#39252\u003c/a\u003e)\nchore: bump aiohttp from 3.14.1 to 3.14.3 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39242\"\u003e#39242\u003c/a\u003e)\nchore: bump cryptography from 48.0.1 to 50.0.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39240\"\u003e#39240\u003c/a\u003e)\ntest(langchain): regression test for shell tool + checkpointer msgpack error (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39267\"\u003e#39267\u003c/a\u003e)\nfix(langchain): handle malformed structured-output responses (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39245\"\u003e#39245\u003c/a\u003e)\nfix(langchain): prevent orphaned \u003ccode\u003etool_calls\u003c/code\u003e in \u003ccode\u003eToolCallLimitMiddleware\u003c/code\u003e end behavior (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39258\"\u003e#39258\u003c/a\u003e)\nfix(langchain): add aliases for bedrock mantle chat models (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39260\"\u003e#39260\u003c/a\u003e)\nfeat(langchain): add LangSmith provider to \u003ccode\u003einit_chat_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39224\"\u003e#39224\u003c/a\u003e)\nfix(langchain): clear stale \u003ccode\u003estructured_response\u003c/code\u003e between checkpointed turns (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39248\"\u003e#39248\u003c/a\u003e)\nfix(langchain): stop HITL approval gates from silently failing open (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39247\"\u003e#39247\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(langchain): propagate model middleware control flow (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39199\"\u003e#39199\u003c/a\u003e)\nfix(langchain): update Anthropic config test (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39172\"\u003e#39172\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/513e425fc0138fe5383ab28b638d5fc959b53f3f\"\u003e\u003ccode\u003e513e425\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39954\"\u003e#39954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/fd2fbd702bf429f820587584a4e5cdfbe57d5d34\"\u003e\u003ccode\u003efd2fbd7\u003c/code\u003e\u003c/a\u003e feat(anthropic): support 1.0 sdk (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39938\"\u003e#39938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b0fb33f919dd868f3db6262d883a84eb454697b0\"\u003e\u003ccode\u003eb0fb33f\u003c/code\u003e\u003c/a\u003e fix(perplexity): map Responses API cache tokens into input_token_details (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39\"\u003e#39\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain==1.3.13...langchain==1.3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.4.9 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.0\u003c/p\u003e\n\u003cp\u003erevert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\nrelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\nfix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\nrelease(core): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39832\"\u003e#39832\u003c/a\u003e)\nfeat(core): propagate gateway information on error path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39829\"\u003e#39829\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\nfix(core): resolve postponed annotations in \u003ccode\u003eStructuredTool._injected_args_keys\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39602\"\u003e#39602\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\nfix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict mappings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39750\"\u003e#39750\u003c/a\u003e)\nfix(core): make subprocess and temporary file tests portable on Windows (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39664\"\u003e#39664\u003c/a\u003e)\nfix(core): fail fast when tool schemas can't resolve forward refs during serialization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39570\"\u003e#39570\u003c/a\u003e)\ntest(core): avoid version-dependent runnable snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39705\"\u003e#39705\u003c/a\u003e)\nfix(core): require all nested properties for strict tool schemas (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39306\"\u003e#39306\u003c/a\u003e)\nfix(core): remove stale sync-stream \u003ccode\u003exfail\u003c/code\u003e [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39720\"\u003e#39720\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39723\"\u003e#39723\u003c/a\u003e)\nperf(core): Lazily import transformers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38037\"\u003e#38037\u003c/a\u003e)\nfix(core): accept non-dict Mapping values in mustache templates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39680\"\u003e#39680\u003c/a\u003e)\ndocs(core): clarify \u003ccode\u003eRunnable\u003c/code\u003e pipe coercion [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39075\"\u003e#39075\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39707\"\u003e#39707\u003c/a\u003e)\nfix(core): finalize chain-group runs on \u003ccode\u003eBaseException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39699\"\u003e#39699\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.5\u003c/p\u003e\n\u003cp\u003echore(core): release 1.5.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39704\"\u003e#39704\u003c/a\u003e)\nfeat(core): incorporate gateway metadata to traces (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39703\"\u003e#39703\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.5\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.4\u003c/p\u003e\n\u003cp\u003erelease(core): 1.5.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39655\"\u003e#39655\u003c/a\u003e)\nfix(core): make abatch_iterate consistent with batch_iterate for None and zero size (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39367\"\u003e#39367\u003c/a\u003e)\nfix(core): respect pydantic aliases when validating tool inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39572\"\u003e#39572\u003c/a\u003e)\nfix(core): issues in merging chunks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39535\"\u003e#39535\u003c/a\u003e)\nfix(core): handle v1 base model validation in async path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39576\"\u003e#39576\u003c/a\u003e)\nfix(core): handle tool descriptions for infer_schema=False (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39573\"\u003e#39573\u003c/a\u003e)\nfix(core): clear usage metadata callback on exceptions in context manager (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39616\"\u003e#39616\u003c/a\u003e)\nfix(core): handle falsy LLM and chat model caches (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39283\"\u003e#39283\u003c/a\u003e)\nchore(core): add httpx as an explicit dep (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39612\"\u003e#39612\u003c/a\u003e)\nfix(core): preserve non-str/non-dict items in \u003ccode\u003eDictPromptTemplate\u003c/code\u003e list values (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39588\"\u003e#39588\u003c/a\u003e)\nfix(core): raise ValueError when explicit tool_outputs length mismatches tool_calls in tool_example_to_messages (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39142\"\u003e#39142\u003c/a\u003e)\nfix(core): guard malformed Anthropic content blocks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38670\"\u003e#38670\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46\"\u003e\u003ccode\u003e4fe9d30\u003c/code\u003e\u003c/a\u003e chore(openai): fix tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39972\"\u003e#39972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c\"\u003e\u003ccode\u003e8fa38dc\u003c/code\u003e\u003c/a\u003e revert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372\"\u003e\u003ccode\u003e122030d\u003c/code\u003e\u003c/a\u003e release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.9...langchain-core==1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-openai` from 1.3.5 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-openai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-openai==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.2\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(openai): raise clear error on unexpected response type in \u003ccode\u003e_create_chat_result\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39731\"\u003e#39731\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39719\"\u003e#39719\u003c/a\u003e)\nfix(openai): preserve reasoning item boundaries (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39278\"\u003e#39278\u003c/a\u003e)\nrelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\nrelease(openai): 1.5.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39653\"\u003e#39653\u003c/a\u003e)\nfix(openai): preserve streamed encrypted reasoning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39635\"\u003e#39635\u003c/a\u003e)\nchore(infra): support langsmith gateway in CI (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39651\"\u003e#39651\u003c/a\u003e)\nrelease(openai): 1.5.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39629\"\u003e#39629\u003c/a\u003e)\nfeat(openai): support openai 3.0 SDK (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39613\"\u003e#39613\u003c/a\u003e)\nchore(partners): bump langgraph floor in openai and huggingface lockfiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39617\"\u003e#39617\u003c/a\u003e)\nrelease(openai): 1.4.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39485\"\u003e#39485\u003c/a\u003e)\nfix(openai): filter invalid tool calls from content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39366\"\u003e#39366\u003c/a\u003e)\nchore(openai): update guidance for responses API for OpenAI-compatible providers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39327\"\u003e#39327\u003c/a\u003e)\nchore(openai): update docstring for \u003ccode\u003einclude_response_headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39326\"\u003e#39326\u003c/a\u003e)\nrelease(openai): 1.4.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39322\"\u003e#39322\u003c/a\u003e)\nfix(openai): handle \u003ccode\u003eContextWindowExceededError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39300\"\u003e#39300\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(openai): filter langchain-generated content block IDs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39209\"\u003e#39209\u003c/a\u003e)\nfix(openai): preserve Responses \u003ccode\u003etext\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39204\"\u003e#39204\u003c/a\u003e)\nfix(openai): redact MCP \u003ccode\u003eauthorization\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39155\"\u003e#39155\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39050\"\u003e#39050\u003c/a\u003e)\nrelease(openai): 1.4.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39045\"\u003e#39045\u003c/a\u003e)\nfeat(anthropic,fireworks,openai): support langsmith gateway through env var (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38742\"\u003e#38742\u003c/a\u003e)\nfix(openai): correct \u003ccode\u003egpt-5.3-chat-latest\u003c/code\u003e profile (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39009\"\u003e#39009\u003c/a\u003e)\nrelease(openai): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38983\"\u003e#38983\u003c/a\u003e)\nchore: bump pillow from 12.2.0 to 12.3.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38999\"\u003e#38999\u003c/a\u003e)\nfeat(core): add \u003ccode\u003ereasoning_effort\u003c/code\u003e as a standard chat model parameter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38887\"\u003e#38887\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38797\"\u003e#38797\u003c/a\u003e)\nrelease(openai): 1.3.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38785\"\u003e#38785\u003c/a\u003e)\nfeat(openai): support explicit prompt caching (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38762\"\u003e#38762\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3478c28ef21435162cb67abbd2aaef67c7cd8981\"\u003e\u003ccode\u003e3478c28\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39763\"\u003e#39763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/420dfc94516f57a4d8662132a55bc532afbc6045\"\u003e\u003ccode\u003e420dfc9\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/85602c3676fbd51e098a01d7c66638719f529f84\"\u003e\u003ccode\u003e85602c3\u003c/code\u003e\u003c/a\u003e release(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/5c3538e83a24eaf819ecec066773a232dcd4a8e6\"\u003e\u003ccode\u003e5c3538e\u003c/code\u003e\u003c/a\u003e fix(core): resolve postponed annotations in `StructuredTool._injected_args_ke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9984a87fa5a6971c76cb12fc75b37ed74286b740\"\u003e\u003ccode\u003e9984a87\u003c/code\u003e\u003c/a\u003e feat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b3e9eef13c23c3a048f9846e1592b658f85f5f94\"\u003e\u003ccode\u003eb3e9eef\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39751\"\u003e#39751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ded2a1fb3c06a9562d9079e42099020ecaca4060\"\u003e\u003ccode\u003eded2a1f\u003c/code\u003e\u003c/a\u003e fix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/04ae7447d72e61841905a41b309856c5191452fb\"\u003e\u003ccode\u003e04ae744\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict ma...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/37f266278d780cd7ebdfbf1891ba92066192d687\"\u003e\u003ccode\u003e37f2662\u003c/code\u003e\u003c/a\u003e feat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2019bf5ebe50324c548f67c2666a804343f9b772\"\u003e\u003ccode\u003e2019bf5\u003c/code\u003e\u003c/a\u003e fix(openai): raise clear error on unexpected response type in `_create_chat_r...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-openai==1.3.5...langchain-openai==1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.9 to 1.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.11\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8533\"\u003e#8533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8532\"\u003e#8532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8502\"\u003e#8502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump cryptography from 48.0.1 to 50.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8528\"\u003e#8528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-sqlite): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8481\"\u003e#8481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8480\"\u003e#8480\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.10\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.9\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.10 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8462\"\u003e#8462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump jupyterlab from 4.5.9 to 4.5.10 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8440\"\u003e#8440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump setuptools from 80.9.0 to 83.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8435\"\u003e#8435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): type v3 stream_events return and native projections (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8389\"\u003e#8389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert(langgraph): delete TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8403\"\u003e#8403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): drop tags from TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8402\"\u003e#8402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8362\"\u003e#8362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump mistune from 3.2.1 to 3.3.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8317\"\u003e#8317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump soupsieve from 2.8.1 to 2.8.4 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8318\"\u003e#8318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(cli): allow langgraph-api versions up to 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8319\"\u003e#8319\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/644815f9e5bc52ad8f7a5227a456227e9c3e639b\"\u003e\u003ccode\u003e644815f\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7d6b5790ba84ce38c26f27a533d8419a31103c36\"\u003e\u003ccode\u003e7d6b579\u003c/code\u003e\u003c/a\u003e feat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d56666f7fbf0d380ad84cdf0cbe5aa48ab0cc086\"\u003e\u003ccode\u003ed56666f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 7 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/6a2822d3c77dad49a96718de73095f18717728be\"\u003e\u003ccode\u003e6a2822d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 5 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fde3068970679184b68d3d068a92c83c966a4888\"\u003e\u003ccode\u003efde3068\u003c/code\u003e\u003c/a\u003e release(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.9...1.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph-checkpoint` from 4.1.1 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph-checkpoint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph-checkpoint==4.2.0\u003c/h2\u003e\n\u003cp\u003eChanges since checkpoint==4.1.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8490\"\u003e#8490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(checkpoint,checkpoint-postgres): add opt-in omit_expired to skip expired rows on read (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8354\"\u003e#8354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8248\"\u003e#8248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8173\"\u003e#8173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: standardize package \u003ccode\u003eREADME.md\u003c/code\u003e structure (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8064\"\u003e#8064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: migrate Python type checking to ty (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8002\"\u003e#8002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the major group in /libs/checkpoint with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7967\"\u003e#7967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 3 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7960\"\u003e#7960\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f22af6248c93df08b553e9a264f6367797e0fddb\"\u003e\u003ccode\u003ef22af62\u003c/code\u003e\u003c/a\u003e chore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/658541c4960f329864a2523fc7d52427e8190bed\"\u003e\u003ccode\u003e658541c\u003c/code\u003e\u003c/a\u003e chore(checkpoint-postgres,checkpoint-sqlite): enable PLC0415 lint rule (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8540\"\u003e#8540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fb3d5f0399222504e015fe959e0e79fdc6e00a65\"\u003e\u003ccode\u003efb3d5f0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/01521c1b1cc4c035f64b9be40f2913285128f526\"\u003e\u003ccode\u003e01521c1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/cd62febcfae628d0930d1f7d3cb3b5919d4b800f\"\u003e\u003ccode\u003ecd62feb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 update...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/checkpoint==4.1.1...checkpoint==4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.11.0 to 5.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental \u003ccode\u003epyemscripten_2026_0_wasm32\u003c/code\u003e (Pyodide) build support added. \u003cem\u003eHowever, the resulting builds are flaky at runtime and subject to various types of random crashes. Freezes on shutdown have also been observed.\u003c/em\u003e\nWhile these issues persist, PyEmscripten wheels will not be uploaded to PyPI, but they are included in the release process and can be downloaded from GitHub on an experimental basis. If you can help track down and fix these issues, please reach out.\nNote: Our PyEmscripten wheels are bigger than usual, as they are built with debug symbols (a non-debug build is not considered useful at this stage).\u003c/li\u003e\n\u003cli\u003eFixed compatibility with Python 3.6 and 3.7.\n\u003cul\u003e\n\u003cli\u003eRuntime support was inadvertently broken due to a faulty cached property backport which held only one cache per class, not per instance as should have been.\nThe accidental loss of caches broke key assumptions of our autoclose logic, which relies on \u003ccode\u003ecached_property\u003c/code\u003e since 5.8.0. (Earlier versions that did not make extensive use of cached properties might work but have not been explicitly tested.)\u003c/li\u003e\n\u003cli\u003eThis release replaces both \u003ccode\u003efunctools.cached_property\u003c/code\u003e and the faulty \u003ccode\u003efunctools.lru_cache()\u003c/code\u003e based backport with our own, backward compatible \u003ccode\u003ecached_property\u003c/code\u003e implementation along with thorough documentation.\u003c/li\u003e\n\u003cli\u003eAlso, fixed setup (i.e. source installation) with Python 3.6 and its max available setup dependency versions (that is, \u003ccode\u003esetuptools\u003c/code\u003e 59). This had probably been broken for a long time. (A few non-breaking issues remain, e.g. for some reason we end up with a \u003ccode\u003epurelib\u003c/code\u003e directory, but it should be \u003ccode\u003eplatlib\u003c/code\u003e.)\u003c/li\u003e\n\u003cli\u003eBear in mind that ctypesgen continues to require Python \u003ccode\u003e\u0026gt;=3.8\u003c/code\u003e at this time (3.6 compat not being a priority in that case), but you can install with \u003ccode\u003e--no-build-isolation\u003c/code\u003e and let the reference bindings be used, or try adding ctypesgen's \u003ccode\u003esrc/\u003c/code\u003e to \u003ccode\u003ePYTHONPATH\u003c/code\u003e to bypass setup, and see how it goes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNote: We do not plan to (and practically cannot) keep up compatibility with outdated Python versions indefinitely.\u003c/strong\u003e In particular, setup compatibility may be dropped sooner or later in favor of contemporary Python packaging concepts, like migrating as much as possible to \u003ccode\u003epyproject.toml\u003c/code\u003e. That said, we are happy to restore compatibility at this point, and fix any \u003cem\u003eunintentional\u003c/em\u003e breakage.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eMANIFEST.in\u003c/code\u003e missing Windows spoof headers, which resulted in subtly incorrect bindings when installing from an sdist on Windows, as seen in test failures. (Release wheels have been unaffected and passed the test suite, so this issue went unnoticed for a while.)\u003c/li\u003e\n\u003cli\u003eBumped \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.1\u003c/code\u003e to \u003ccode\u003e2407.3\u003c/code\u003e. Made its setup python 3.6 compatible likewise (wheels should have worked before now). Changed versioning and release process so that CI no longer needs to push to the repository (may eventually become a blueprint for pypdfium2 itself). More documentation added, including \u003ccode\u003emanylinux2014\u003c/code\u003e POC.\u003c/li\u003e\n\u003cli\u003eInternal improvements (non-exhaustive):\n\u003cul\u003e\n\u003cli\u003eProperly clean up \u003ccode\u003e*.egg-info/\u003c/code\u003e and \u003ccode\u003ebuild/\u003c/code\u003e before packaging, to avoid mad file inclusion bugs (ran into this while working on setup include rules).\u003c/li\u003e\n\u003cli\u003eMigrated from requirements files to PEP 735 dependency groups (\u003ccode\u003epyproject.toml\u003c/code\u003e).\nRecent enough \u003ccode\u003epip\u003c/code\u003e should be available to Python \u0026gt;= 3.9. For compatibility with older versions, feel free to use \u003ccode\u003e./utils/misc/install_dep_group.py\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eApplied dependency cooldowns to internal callers of \u003ccode\u003epip install\u003c/code\u003e. Always use virtual environments in CI. Use lockfiles in sensitive areas (e.g. publish jobs).\u003c/li\u003e\n\u003cli\u003eRearranged \u0026amp; improved utilities. Cleaner distinction between \u003ccode\u003esetupsrc/\u003c/code\u003e and \u003ccode\u003eutils/\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eWork around persistent i686 container network issues by downgrading host runner to \u003ccode\u003eubuntu-24.04\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eLet \u003ccode\u003esetupsrc/\u003c/code\u003e share code from \u003ccode\u003esrc/\u003c/code\u003e through a \u003ccode\u003epypdfium2_cfg._shared\u003c/code\u003e submodule that can be added to \u003ccode\u003esys.path\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[manylinux_mipsle]\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\u003cblockquote\u003e\n\u003cp\u003e[!CAUTION]\nThe following builds are affected by known, major issues (e.g. endianness bugs, crashes, freezes) and are \u003cstrong\u003eNOT\u003c/strong\u003e considered ready for production use:\n\u003ccode\u003e[manylinux_s390x, musllinux_s390x, pyodide_wasm32]\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eCommit logs\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eCommits between \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.12.1\"\u003e\u003ccode\u003e5.12.1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.13.0\"\u003e\u003ccode\u003e5.13.0\u003c/code\u003e\u003c/a\u003e (latest commit first):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea4659102\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de35\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367a\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e78\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce0\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd619\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\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/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea465910\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de3\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e7\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd61\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3282e36375fd6e139f885ff634747ab0fe643e66\"\u003e\u003ccode\u003e3282e36\u003c/code\u003e\u003c/a\u003e Add zizmor to check step\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/07b84aaaa9c4c44429e0316c15c179b64c004d0a\"\u003e\u003ccode\u003e07b84aa\u003c/code\u003e\u003c/a\u003e Progress changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/6ec38d2aa64d59f02892ddf07f601bbdb5bbf53e\"\u003e\u003ccode\u003e6ec38d2\u003c/code\u003e\u003c/a\u003e git_net_additions: further improve fallback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b5cdd7c7fcd2c01cd7744b6824f977bbbcb831c6\"\u003e\u003ccode\u003eb5cdd7c\u003c/code\u003e\u003c/a\u003e git_net_additions: fancier fallback for binary files\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.11.0...5.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.4 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.5 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.5\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix numpy deprecations by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/505\"\u003educkdb/duckdb-python#505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix alias of \u003ccode\u003eDuckDBPyRelation.query\u003c/code\u003e (closes \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/468\"\u003e#468\u003c/a\u003e) by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/524\"\u003educkdb/duckdb-python#524\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/duckdb/duckdb-python/commit/b236c8194ed14c7a7c685e0534dde501cc855b3a\"\u003e\u003ccode\u003eb236c81\u003c/code\u003e\u003c/a\u003e Pin submodule to release hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/e6a21c5b5d65d741fafd5a7389c93b8b86a7f249\"\u003e\u003ccode\u003ee6a21c5\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/f637bf42683030cbb108268581b866f13cb75031\"\u003e\u003ccode\u003ef637bf4\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/4c5c73c63381bd0587fd42b41093c8f0abe9f17c\"\u003e\u003ccode\u003e4c5c73c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6fae28061912de88c3c0f6e6ad6b2f3fc5ee5235\"\u003e\u003ccode\u003e6fae280\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/d8d5f0a36003c9090ea9480cdefa8f4b4122fece\"\u003e\u003ccode\u003ed8d5f0a\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5d85f06025e83e3d2c69813acf4b2dc02bebc415\"\u003e\u003ccode\u003e5d85f06\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c3cbf8d9ca87cea3dfbb89bfa2102ff4ec530f00\"\u003e\u003ccode\u003ec3cbf8d\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/93418b65c6ca821d71d9a091fb5218ad55d8a4eb\"\u003e\u003ccode\u003e93418b6\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/24f1915b590e1e663a14c0bff9e49bf28ebece9b\"\u003e\u003ccode\u003e24f1915\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.4...v1.5.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.5.3 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.6.0 - 2026/08/31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix caching of functions whose source cannot be retrieved, such as functions\ndefined in a notebook cell. Their identity fell back to\n\u003ccode\u003estr(hash(func.__code__))\u003c/code\u003e, which is salted by \u003ccode\u003ePYTHONHASHSEED\u003c/code\u003e and so\ndiffered between processes. A worker reading the \u003ccode\u003efunc_code.py\u003c/code\u003e written by\nanother one concluded that the function had changed and wiped the whole\ncache directory for it, discarding results computed by its peers.\n\u003ccode\u003efunc_code.py\u003c/code\u003e is also no longer rewritten in place, so a reader can no\nlonger catch it half-written and draw the same conclusion.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1694\"\u003ejoblib/joblib#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop python 3.9 support. The oldest supported Python version\nis now Python 3.10.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1773\"\u003ejoblib/joblib#1773\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eeval_expr\u003c/code\u003e (used to evaluate the \u003ccode\u003epre_dispatch\u003c/code\u003e argument of\n\u003ccode\u003eParallel\u003c/code\u003e) to raise a \u003ccode\u003eValueError\u003c/code\u003e as documented instead of leaking a\n\u003ccode\u003eZeroDivisionError\u003c/code\u003e for expressions that divide or take a modulo by zero.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1810\"\u003ejoblib/joblib#1810\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMemorizedResult\u003c/code\u003e now forwards \u003ccode\u003emmap_mode\u003c/code\u003e to its store backend, so a\ncached array reconstructed from a location is memory-mapped as requested\ninstead of being loaded fully into memory.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1799\"\u003ejoblib/joblib#1799\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnvendor cloudpickle to more quickly benefit from maintenance releases\nof cloudpickle\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1775\"\u003ejoblib/joblib#1775\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMemory.cache\u003c/code\u003e for functions with a keyword-only argument that has a\ndefault declared before a keyword-only argument without a default.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1731\"\u003ejoblib/joblib#1731\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behavior of \u003ccode\u003efilter_args\u003c/code\u003e on some precise cases.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1800\"\u003ejoblib/joblib#1800\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a concurrency error that could happen with unordered generator.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1789\"\u003ejoblib/joblib#1789\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003edump()\u003c/code\u003e now accepts any input \u003ccode\u003eos.PathLike\u003c/code\u003e object to be consistent with\n\u003ccode\u003eload\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1812\"\u003ejoblib/joblib#1812\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe documentation now uses pydata sphinx theme. Furthermore, optional dependencies\n\u003ccode\u003etest\u003c/code\u003e and \u003ccode\u003edocs\u003c/code\u003e have been added to \u003ccode\u003epyproject.toml\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1774\"\u003ejoblib/joblib#1774\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky 3.6.0\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/joblib/joblib/commit/cd9a6b05fc4f2b1c8202eb62c4e863484f8cc099\"\u003e\u003ccode\u003ecd9a6b0\u003c/code\u003e\u003c/a\u003e Release 1.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1844\"\u003e#1844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/d873f972949d78166af6c945667c53f04d41fed6\"\u003e\u003ccode\u003ed873f97\u003c/code\u003e\u003c/a\u003e MNT vendor loky 3.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4ff61afd0849f18fddf5fbd137c1f02bfaed5223\"\u003e\u003ccode\u003e4ff61af\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/804f4725e1a27b1425c8aabcf7312ceb11c3a07d\"\u003e\u003ccode\u003e804f472\u003c/code\u003e\u003c/a\u003e FIX make func_code stable across processes when the source is unavailable (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/65cc49da449f70ffa73bc7c3c57fd418392f9993\"\u003e\u003ccode\u003e65cc49d\u003c/code\u003e\u003c/a\u003e TST Restore RNG sequence in hash compatibility test (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1837\"\u003e#1837\u003c/a\u003e)\u003c/li\u003e\n\u003cli...\n\n_Description has been truncated_","html_url":"https://github.com/skywingsbruce-png/TYvibe/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/skywingsbruce-png%2FTYvibe/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"},{"uuid":"5328436912","node_id":"PR_kwDOS9agj88AAAABB8971Q","number":357,"state":"closed","title":"chore(deps)(deps): Bump the python-minor-patch group across 1 directory with 93 updates","user":"dependabot[bot]","labels":["security","dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-05T05:50:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T19:42:53.000Z","updated_at":"2026-09-05T05:50:13.000Z","time_to_close":209238,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): Bump","group_name":"python-minor-patch","update_count":93,"packages":[{"name":"strands-agents-tools","old_version":"0.8.5","new_version":"0.8.7","repository_url":"https://github.com/strands-agents/tools"},{"name":"boto3","old_version":"1.43.32","new_version":"1.43.83","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.43.55","new_version":"1.43.83","repository_url":"https://github.com/boto/botocore"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"awslabs-aws-api-mcp-server","old_version":"1.4.1","new_version":"1.5.3","repository_url":"https://github.com/awslabs/mcp"},{"name":"awslabs-billing-cost-management-mcp-server","old_version":"0.0.29","new_version":"0.0.35","repository_url":"https://github.com/awslabs/mcp"},{"name":"pypdf","old_version":"6.16.1","new_version":"6.16.2","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"bedrock-agentcore-starter-toolkit","old_version":"0.3.11","new_version":"0.3.12","repository_url":"https://github.com/aws/bedrock-agentcore-starter-toolkit"},{"name":"uv","old_version":"0.12.0","new_version":"0.12.7","repository_url":"https://github.com/astral-sh/uv"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.0","new_version":"4.14.2","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.10.0","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"ast-serialize","old_version":"0.6.0","new_version":"0.8.0","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"awscli","old_version":"1.45.55","new_version":"1.46.1","repository_url":"https://github.com/aws/aws-cli"},{"name":"awscrt","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/awslabs/aws-crt-python"},{"name":"bedrock-agentcore","old_version":"1.19.0","new_version":"1.22.0","repository_url":"https://github.com/aws/bedrock-agentcore-sdk-python"},{"name":"caio","old_version":"0.9.25","new_version":"0.12.2","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.11.0","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"cyclopts","old_version":"4.18.0","new_version":"4.23.3","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"dill","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.4.0","new_version":"0.4.3","repository_url":"https://github.com/pypa/distlib"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"docutils","old_version":"0.19","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastmcp","old_version":"3.4.2","new_version":"3.4.7","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"fastmcp-slim","old_version":"3.4.2","new_version":"3.4.7","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"filelock","old_version":"3.29.4","new_version":"3.32.4","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"googleapis-common-protos","old_version":"1.71.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"griffelib","old_version":"2.0.2","new_version":"2.2.0"},{"name":"grpcio","old_version":"1.81.1","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joserfc","old_version":"1.7.1","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"jsonschema-path","old_version":"0.3.4","new_version":"0.5.0","repository_url":"https://github.com/p1c2u/jsonschema-path"},{"name":"kubernetes","old_version":"36.0.2","new_version":"36.0.3","repository_url":"https://github.com/kubernetes-client/python"},{"name":"librt","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/mypyc/librt"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdownify","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/matthewwithanm/python-markdownify"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"ollama","old_version":"0.6.0","new_version":"0.6.2","repository_url":"https://github.com/ollama/ollama-python"},{"name":"opentelemetry-util-genai","old_version":"1.0b0","new_version":"1.1b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pathable","old_version":"0.4.4","new_version":"0.6.0","repository_url":"https://github.com/p1c2u/pathable"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.11.5","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"python-discovery","old_version":"1.4.2","new_version":"1.6.0","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rich-rst","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/wasi-master/rich-rst"},{"name":"rpds-py","old_version":"2026.5.1","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"ruamel-yaml","old_version":"0.18.16","new_version":"0.19.1"},{"name":"s3transfer","old_version":"0.19.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"slack-bolt","old_version":"1.26.0","new_version":"1.30.0","repository_url":"https://github.com/slackapi/bolt-python"},{"name":"slack-sdk","old_version":"3.37.0","new_version":"3.44.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"soupsieve","old_version":"2.9.1","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlglot","old_version":"30.12.0","new_version":"30.17.0","repository_url":"https://github.com/tobymao/sqlglot"},{"name":"sse-starlette","old_version":"3.0.3","new_version":"3.4.8","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"strands-agents","old_version":"1.50.2","new_version":"1.54.0","repository_url":"https://github.com/strands-agents/harness-sdk"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.2.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"typer","old_version":"0.20.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.3","repository_url":"https://github.com/python/tzdata"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"21.5.1","new_version":"21.7.7","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"17.0.1","new_version":"17.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 93 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [strands-agents-tools](https://github.com/strands-agents/tools) | `0.8.5` | `0.8.7` |\n| [boto3](https://github.com/boto/boto3) | `1.43.32` | `1.43.83` |\n| [botocore](https://github.com/boto/botocore) | `1.43.55` | `1.43.83` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [awslabs-aws-api-mcp-server](https://github.com/awslabs/mcp) | `1.4.1` | `1.5.3` |\n| [awslabs-billing-cost-management-mcp-server](https://github.com/awslabs/mcp) | `0.0.29` | `0.0.35` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.1` | `6.16.2` |\n| [bedrock-agentcore-starter-toolkit](https://github.com/aws/bedrock-agentcore-starter-toolkit) | `0.3.11` | `0.3.12` |\n| [uv](https://github.com/astral-sh/uv) | `0.12.0` | `0.12.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.0` | `4.14.2` |\n| [asgiref](https://github.com/django/asgiref) | `3.10.0` | `3.12.1` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.6.0` | `0.8.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [awscli](https://github.com/aws/aws-cli) | `1.45.55` | `1.46.1` |\n| [awscrt](https://github.com/awslabs/aws-crt-python) | `0.36.0` | `0.36.2` |\n| [bedrock-agentcore](https://github.com/aws/bedrock-agentcore-sdk-python) | `1.19.0` | `1.22.0` |\n| [caio](https://github.com/mosquito/caio) | `0.9.25` | `0.12.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.11.0` | `7.16.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.18.0` | `4.23.3` |\n| [dill](https://github.com/uqfoundation/dill) | `0.4.0` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.4.0` | `0.4.3` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.23` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.4.2` | `3.4.7` |\n| [fastmcp-slim](https://github.com/PrefectHQ/fastmcp) | `3.4.2` | `3.4.7` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.29.4` | `3.32.4` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.71.0` | `1.75.2` |\n| griffelib | `2.0.2` | `2.2.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.81.1` | `1.83.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.1` | `1.7.5` |\n| [jsonschema-path](https://github.com/p1c2u/jsonschema-path) | `0.3.4` | `0.5.0` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `36.0.2` | `36.0.3` |\n| [librt](https://github.com/mypyc/librt) | `0.13.0` | `0.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.2` |\n| [markdownify](https://github.com/matthewwithanm/python-markdownify) | `1.2.0` | `1.2.3` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.0` | `0.6.2` |\n| [opentelemetry-util-genai](https://github.com/open-telemetry/opentelemetry-python-contrib) | `1.0b0` | `1.1b0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pathable](https://github.com/p1c2u/pathable) | `0.4.4` | `0.6.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.11.5` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.4.2` | `1.6.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rich-rst](https://github.com/wasi-master/rich-rst) | `2.0.1` | `2.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.5.1` | `2026.6.3` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| ruamel-yaml | `0.18.16` | `0.19.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.19.0` | `0.19.2` |\n| [slack-bolt](https://github.com/slackapi/bolt-python) | `1.26.0` | `1.30.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.37.0` | `3.44.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.9.1` | `2.9.2` |\n| [sqlglot](https://github.com/tobymao/sqlglot) | `30.12.0` | `30.17.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.0.3` | `3.4.8` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [strands-agents](https://github.com/strands-agents/harness-sdk) | `1.50.2` | `1.54.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.2.0` | `3.3.0` |\n| [typer](https://github.com/fastapi/typer) | `0.20.0` | `0.27.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.5.1` | `21.7.7` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `17.0.1` | `17.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.3.0` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n\n\nUpdates `strands-agents-tools` from 0.8.5 to 0.8.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/strands-agents/tools/releases\"\u003estrands-agents-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.7\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.6..v0.8.7\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e) (1174bd6)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e) (c7c0c28)\u003c/li\u003e\n\u003cli\u003efix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e) (a47c204)\u003c/li\u003e\n\u003cli\u003efix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e) (2425040)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/549\"\u003e#549\u003c/a\u003e) (badcb5c)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👷 CI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/583\"\u003e#583\u003c/a\u003e) (29df37f)\u003c/li\u003e\n\u003cli\u003eci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/561\"\u003e#561\u003c/a\u003e) (836b0d5)\u003c/li\u003e\n\u003cli\u003eci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e) (db4cf76)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.6\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.5..v0.8.6\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: deprecate 11 tools superseded by SDK capability, MCP servers, or nothing (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/566\"\u003e#566\u003c/a\u003e) (bddfd3a)\u003c/li\u003e\n\u003cli\u003efeat: deprecate sleep, editor, and shell in favor of SDK vended tools (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/550\"\u003e#550\u003c/a\u003e) (45bf7b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(environment): drive value masking from environment variable (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/545\"\u003e#545\u003c/a\u003e) (60b6390)\u003c/li\u003e\n\u003cli\u003efix(use_aws): gate and redact ssm parameter and kms responses (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/520\"\u003e#520\u003c/a\u003e) (f924945)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: note that tools are experimental and require an independent security review (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/547\"\u003e#547\u003c/a\u003e) (6702a90)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👷 CI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: update ruff requirement from \u0026lt;0.14.0,\u0026gt;=0.13.0 to \u0026gt;=0.13.0,\u0026lt;0.17.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/562\"\u003e#562\u003c/a\u003e) (b13980c)\u003c/li\u003e\n\u003cli\u003eci: update pre-commit requirement from \u0026lt;4.2.0,\u0026gt;=3.2.0 to \u0026gt;=3.2.0,\u0026lt;4.7.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/552\"\u003e#552\u003c/a\u003e) (95293c1)\u003c/li\u003e\n\u003cli\u003eci: update psutil requirement from \u0026lt;6.0.0,\u0026gt;=5.8.0 to \u0026gt;=5.8.0,\u0026lt;8.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/554\"\u003e#554\u003c/a\u003e) (c24fcc3)\u003c/li\u003e\n\u003cli\u003eci: update mypy requirement from \u0026lt;1.0.0,\u0026gt;=0.981 to \u0026gt;=0.981,\u0026lt;3.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/556\"\u003e#556\u003c/a\u003e) (d6a4a52)\u003c/li\u003e\n\u003cli\u003eci: align dependabot config with harness-sdk conventions (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/538\"\u003e#538\u003c/a\u003e) (a2d90e6)\u003c/li\u003e\n\u003cli\u003eci(integ): opt in to allow-unsafe-pr-checkout on fork PR checkout (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/548\"\u003e#548\u003c/a\u003e) (b27f672)\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/strands-agents/tools/commit/c7c0c28ad9e450a3193e49d7f25b1435a2bd5d99\"\u003e\u003ccode\u003ec7c0c28\u003c/code\u003e\u003c/a\u003e fix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/29df37f0a6823125dcd685fda57b44e47841e8ec\"\u003e\u003ccode\u003e29df37f\u003c/code\u003e\u003c/a\u003e ci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/badcb5c42c1d601ceebb1bc732c6c7a2a2d53d8c\"\u003e\u003ccode\u003ebadcb5c\u003c/code\u003e\u003c/a\u003e docs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/a47c20443eadc223944eb134ea2f2d1b9c0638fc\"\u003e\u003ccode\u003ea47c204\u003c/code\u003e\u003c/a\u003e fix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/24250405149c69c1be1610f018e86417c1c4fc26\"\u003e\u003ccode\u003e2425040\u003c/code\u003e\u003c/a\u003e fix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/836b0d5615380a4d2b7f0897382db2eb5e695e95\"\u003e\u003ccode\u003e836b0d5\u003c/code\u003e\u003c/a\u003e ci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/1174bd667a66ec2b50ce0ee5e68dfb966334d407\"\u003e\u003ccode\u003e1174bd6\u003c/code\u003e\u003c/a\u003e feat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/db4cf769306aa9c76b78ce5444543f02f769d95d\"\u003e\u003ccode\u003edb4cf76\u003c/code\u003e\u003c/a\u003e ci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/bddfd3aac2bf1f43022d54019ca38a19306aa279\"\u003e\u003ccode\u003ebddfd3a\u003c/code\u003e\u003c/a\u003e feat: deprecate 11 tools superseded by SDK capability, MCP servers, or nothin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/b13980c81ab431ab07874c6c512e7c1f60ad6a31\"\u003e\u003ccode\u003eb13980c\u003c/code\u003e\u003c/a\u003e ci: update ruff requirement from \u0026lt;0.14.0,\u0026gt;=0.13.0 to \u0026gt;=0.13.0,\u0026lt;0.17.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/strands-agents/tools/compare/v0.8.5...v0.8.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.32 to 1.43.83\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/77e6582e7806479353a39e176df999e9f5d39783\"\u003e\u003ccode\u003e77e6582\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.83'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bdb0f450806c1702303e83246fb3aecab284d2c2\"\u003e\u003ccode\u003ebdb0f45\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.83\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/950987a7439b8b5da7f89655b228e55ab7b0e9fd\"\u003e\u003ccode\u003e950987a\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/156b04aeb70aceccb728166f89f3dc15abd04d6f\"\u003e\u003ccode\u003e156b04a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dfc34476cc73ba8d117184854f18439945ce6cd8\"\u003e\u003ccode\u003edfc3447\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e6c550f0ac715e2d941ddf1f29dac1b3bf6b6dec\"\u003e\u003ccode\u003ee6c550f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.82\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/94d6577761a35eaeae56a72bb15c05f2d41dcbd0\"\u003e\u003ccode\u003e94d6577\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/18a131c1144029b5a5a3bf1fb7c3206c963a73e4\"\u003e\u003ccode\u003e18a131c\u003c/code\u003e\u003c/a\u003e Bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4835\"\u003e#4835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1ee61ff25b7b2a11577095ac1d478f975c454b1a\"\u003e\u003ccode\u003e1ee61ff\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d3a3a5280c71f1eede76e1440df93085442c77f4\"\u003e\u003ccode\u003ed3a3a52\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.32...1.43.83\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.43.55 to 1.43.83\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b6cdacdd27ff39fc54bc9f9723ba5a60c3c8a512\"\u003e\u003ccode\u003eb6cdacd\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.83'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/bcf4c854c5b99e8a092a2d525abeec25d8491c5c\"\u003e\u003ccode\u003ebcf4c85\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.83\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/073e2f0f4f4605bdbdb894b81a4dd2770843e92c\"\u003e\u003ccode\u003e073e2f0\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/de6b6ea490b9ce83165bd3aa599bdba63b6e5b4e\"\u003e\u003ccode\u003ede6b6ea\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/84f92823a2da87d679122033651a969fdcd4c6c4\"\u003e\u003ccode\u003e84f9282\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/95e40832c62da978aca8cba61c991bab6672bf3c\"\u003e\u003ccode\u003e95e4083\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.82\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0ba3a7417517f5a49f1c7f0d0072803bee1dbaec\"\u003e\u003ccode\u003e0ba3a74\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b5c1794f453f0a0a56f3f619baba223d9321a3f9\"\u003e\u003ccode\u003eb5c1794\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/5fbd66eb0e298d625e0c557e0d5231afb7ef4277\"\u003e\u003ccode\u003e5fbd66e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/7459719729728ea90a868f3c059837b66768becb\"\u003e\u003ccode\u003e7459719\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.81\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.43.55...1.43.83\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\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.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.4...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-aws-api-mcp-server` from 1.4.1 to 1.5.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-billing-cost-management-mcp-server` from 0.0.29 to 0.0.35\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.1 to 6.16.2\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.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e) by \u003ca href=\"https://github.com/RISHIKKASULA\"\u003e\u003ccode\u003e@​RISHIKKASULA\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewkogan\"\u003e\u003ccode\u003e@​matthewkogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\u003c/a\u003e) by \u003ca href=\"https://github.com/BashfulHippo\"\u003e\u003ccode\u003e@​BashfulHippo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow repeated page references (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3959\"\u003e#3959\u003c/a\u003e) by \u003ca href=\"https://github.com/yuming-long\"\u003e\u003ccode\u003e@​yuming-long\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove RC4 fallback when cryptography can't provide it (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3853\"\u003e#3853\u003c/a\u003e) by \u003ca href=\"https://github.com/msylw\"\u003e\u003ccode\u003e@​msylw\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.16.1...6.16.2\"\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.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow repeated page references (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3959\"\u003e#3959\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove RC4 fallback when cryptography can't provide it (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.16.2\"\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/1da09878621e5286e00510e4d378dfdf8940e541\"\u003e\u003ccode\u003e1da0987\u003c/code\u003e\u003c/a\u003e REL: 6.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/f6853ccd3ff492309c84060186aabc88ed472ffd\"\u003e\u003ccode\u003ef6853cc\u003c/code\u003e\u003c/a\u003e BUG: Make remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c6d38af1c561c629cd6965f611e8afad9b445ab0\"\u003e\u003ccode\u003ec6d38af\u003c/code\u003e\u003c/a\u003e BUG: Type character widths as float (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/882b3b2bda29ab6f1f877d896f42efbaffd92015\"\u003e\u003ccode\u003e882b3b2\u003c/code\u003e\u003c/a\u003e STY: Type the XMP stream as StreamObject rather than ContentStream (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3995\"\u003e#3995\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4c8f707f3378928dd352c908d4e4fe3c6716af9b\"\u003e\u003ccode\u003e4c8f707\u003c/code\u003e\u003c/a\u003e STY: Accept any sequence of fit arguments in Fit (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/245032144187de4f05d4a4821f86020cdcfd9154\"\u003e\u003ccode\u003e2450321\u003c/code\u003e\u003c/a\u003e STY: Accept any sequence as the annotation border (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3991\"\u003e#3991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2dcab8de11d5bb0a52f359d8244d2c748cefb2f7\"\u003e\u003ccode\u003e2dcab8d\u003c/code\u003e\u003c/a\u003e MAINT: Skip test_appearance_stream_rtl when RTL support is unavailable (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3993\"\u003e#3993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/412975a86033ec2d66c6e4cfd73afd85390a7db0\"\u003e\u003ccode\u003e412975a\u003c/code\u003e\u003c/a\u003e BUG: Be more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ddbfea942cadd1594cb3902a27289a53ca637204\"\u003e\u003ccode\u003eddbfea9\u003c/code\u003e\u003c/a\u003e BUG: Interpolate the reader in the reset_translation error message (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c646ef24857f152afdf84f8b5f8a9d4097bae258\"\u003e\u003ccode\u003ec646ef2\u003c/code\u003e\u003c/a\u003e ROB: Improve RC4 fallback when cryptography can't provide it (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bedrock-agentcore-starter-toolkit` from 0.3.11 to 0.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/releases\"\u003ebedrock-agentcore-starter-toolkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBedrock AgentCore Starter Toolkit v0.3.12\u003c/h2\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install bedrock-agentcore-starter-toolkit==0.3.12\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/blob/v0.3.12/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRelease v0.3.11 by \u003ca href=\"https://github.com/agentcore-devx-automation\"\u003e\u003ccode\u003e@​agentcore-devx-automation\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/555\"\u003eaws/bedrock-agentcore-starter-toolkit#555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add input validation to memory fields by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/571\"\u003eaws/bedrock-agentcore-starter-toolkit#571\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/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ehttps://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\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/aws/bedrock-agentcore-starter-toolkit/blob/main/CHANGELOG.md\"\u003ebedrock-agentcore-starter-toolkit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.12] - 2026-08-19\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e) (e3fe8a2)\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e) (be24ff2)\u003c/li\u003e\n\u003cli\u003echore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e) (d149aa8)\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/aws/bedrock-agentcore-starter-toolkit/commit/e3fe8a210092db389e4583cec1a58ce5c52ac0ac\"\u003e\u003ccode\u003ee3fe8a2\u003c/code\u003e\u003c/a\u003e fix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/be24ff2e19d599544b1c0ce7a29e26e5f45038cd\"\u003e\u003ccode\u003ebe24ff2\u003c/code\u003e\u003c/a\u003e fix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/d149aa8d024824fb88109a4a2458acd0ea04885e\"\u003e\u003ccode\u003ed149aa8\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uv` from 0.12.0 to 0.12.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace managed Python installations when upgrading to a newer build of the same version (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Linux \u003ccode\u003es390x\u003c/code\u003e, \u003ccode\u003eppc64le\u003c/code\u003e, and \u003ccode\u003eloongarch64\u003c/code\u003e targets for cross-platform dependency resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21313\"\u003e#21313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry downloads with configured credentials when Azure Storage denies anonymous access to an endpoint configured via \u003ccode\u003eUV_AZURE_ENDPOINT_URL\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21318\"\u003e#21318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse content-based directory hashes to deduplicate extracted wheels in the cache with the \u003ccode\u003econtent-addressed-cache\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19693\"\u003e#19693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReject source archives with hash mismatches before persisting their extracted contents to the cache (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21248\"\u003e#21248\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove pyx specific features (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21182\"\u003e#21182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21183\"\u003e#21183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21184\"\u003e#21184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21185\"\u003e#21185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.12.7\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/uv/releases/download/0.12.7/uv-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/uv/releases/download/0.12.7/uv-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload uv 0.12.7\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-apple-darwin.tar.gz\"\u003euv-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-apple-darwin.tar.gz\"\u003euv-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-pc-windows-msvc.zip\"\u003euv-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-i686-pc-windows-msvc.zip\"\u003euv-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-pc-windows-msvc.zip\"\u003euv-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-unknown-linux-gnu.tar.gz\"\u003euv-aarch64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace managed Python installations when upgrading to a newer build of the same version (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Linux \u003ccode\u003es390x\u003c/code\u003e, \u003ccode\u003eppc64le\u003c/code\u003e, and \u003ccode\u003eloongarch64\u003c/code\u003e targets for cross-platform dependency resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21313\"\u003e#21313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry downloads with configured credentials when Azure Storage denies anonymous access to an endpoint configured via \u003ccode\u003eUV_AZURE_ENDPOINT_URL\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21318\"\u003e#21318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse content-based directory hashes to deduplicate extracted wheels in the cache with the \u003ccode\u003econtent-addressed-cache\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19693\"\u003e#19693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReject source archives with hash mismatches before persisting their extracted contents to the cache (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21248\"\u003e#21248\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove pyx specific features (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21182\"\u003e#21182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21183\"\u003e#21183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21184\"\u003e#21184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21185\"\u003e#21185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.12.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-25.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CPython to use OpenSSL 3.5.8 and libffi 3.4.8 \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21295\"\u003e#21295\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReport cache-cleaning space savings from filesystem block allocation and avoid double-counting hard links (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21261\"\u003e#21261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit warnings about unbounded \u003ccode\u003euv_build\u003c/code\u003e requirements to source-distribution builds (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisplay byte counts below 1 KiB without a fractional part (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21237\"\u003e#21237\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003euv workspace metadata --sync --exact\u003c/code\u003e to remove packages outside the selected resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21117\"\u003e#21117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003eartifact-hash-filtering\u003c/code\u003e preview feature to make \u003ccode\u003euv pip compile --generate-hashes\u003c/code\u003e honor \u003ccode\u003e--only-binary\u003c/code\u003e and \u003ccode\u003e--no-binary\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21235\"\u003e#21235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoffs when \u003ccode\u003euv check\u003c/code\u003e selects its \u003ccode\u003ety\u003c/code\u003e executable (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21227\"\u003e#21227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve virtual-environment hints from \u003ccode\u003etar-codec\u003c/code\u003e source-distribution errors when the base interpreter is outside a \u003ccode\u003ebin\u003c/code\u003e directory (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21146\"\u003e#21146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable profile-guided optimization for Linux x86-64 release binaries (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21001\"\u003e#21001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable profile-guided optimization for Windows x86-64 release binaries (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21003\"\u003e#21003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable profile-guided optimization for macOS ARM64 release binaries (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21002\"\u003e#21002\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/astral-sh/uv/commit/61291a8ca5477a9ca653f14d2ac5665587c263fa\"\u003e\u003ccode\u003e61291a8\u003c/code\u003e\u003c/a\u003e Bump version to 0.12.7 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21328\"\u003e#21328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/dd217b895fb6b4b663990d1c7a1edd9edec82b5e\"\u003e\u003ccode\u003edd217b8\u003c/code\u003e\u003c/a\u003e de-pyx-ify malformed bearer token test (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21326\"\u003e#21326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/306ee9c8f56f9e9ce73fab28698894f6d531caf2\"\u003e\u003ccode\u003e306ee9c\u003c/code\u003e\u003c/a\u003e remove references to pyx in RFC 9457 handling code (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21187\"\u003e#21187\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6186dcb15635408f9d4030b8d492ad21b5cbbd51\"\u003e\u003ccode\u003e6186dcb\u003c/code\u003e\u003c/a\u003e remove pyx authentication (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/f61b30045a28c04506e3b380b4ebfba8950069a4\"\u003e\u003ccode\u003ef61b300\u003c/code\u003e\u003c/a\u003e remove pyx publication support (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21185\"\u003e#21185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/ba19067bcffc3a6dd5f393dacc0cbf95333870b1\"\u003e\u003ccode\u003eba19067\u003c/code\u003e\u003c/a\u003e remove support for pyx-specific .whl.tar.zst format (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21184\"\u003e#21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/ad852ce391097fdb6f1a62d8a3f7a3b169980b3e\"\u003e\u003ccode\u003ead852ce\u003c/code\u003e\u003c/a\u003e fix PR labeler automation (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21325\"\u003e#21325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/156dd51134f83f6815908d7ddd9ecd141664e216\"\u003e\u003ccode\u003e156dd51\u003c/code\u003e\u003c/a\u003e Replace Python installations during build upgrades (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/1a486d14e90b0cf75fc8a0074b19add0dfd12152\"\u003e\u003ccode\u003e1a486d1\u003c/code\u003e\u003c/a\u003e Add coverage for Python build upgrades (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21320\"\u003e#21320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/17b195bd714cc6f2d91191ca2cb63d8b5cb94be5\"\u003e\u003ccode\u003e17b195b\u003c/code\u003e\u003c/a\u003e Retry private Azure downloads with authentication (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21318\"\u003e#21318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.12.0...0.12.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.6.1 to 4.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.2 - 2026-08-10\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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/pre-commit/pre-commit/commit/9767b6c8211a6bf683875a0afcf2b390457a4b66\"\u003e\u003ccode\u003e9767b6c\u003c/code\u003e\u003c/a\u003e v4.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/42ee3ff5ac1cae639613c9ad002d0502ae82384f\"\u003e\u003ccode\u003e42ee3ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e from pre-commit/npm-build-scripts-11-x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/30566198cb2d05201625f92b660a34c38ffe2dc7\"\u003e\u003ccode\u003e3056619\u003c/code\u003e\u003c/a\u003e fix \u003ccode\u003elanguage: node\u003c/code\u003e for hooks with build scripts and npm 11.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.1...v4.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiofile` from 3.11.1 to 3.12.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mosquito/aiofile/releases\"\u003eaiofile's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.12.3\u003c/h2\u003e\n\u003cp\u003eUpdate README.md\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multi-library throughput benchmark by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/111\"\u003emosquito/aiofile#111\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd throughput comparison table to the README benchmark section by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/112\"\u003emosquito/aiofile#112\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix double close(), TextFileWrapper.read() overshoot, add closed attribute by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/110\"\u003emosquito/aiofile#110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump caio dependency to ~0.12.0 by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/109\"\u003emosquito/aiofile#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\"\u003ehttps://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/f1de9014ad7b7954e6417fc3c4d178d6ff540973\"\u003e\u003ccode\u003ef1de901\u003c/code\u003e\u003c/a\u003e Rework benchmark: subprocess-per-participant, fixed op count, real latency pe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/d1c0d9fd665c96166d336a114c3c0ca3babc514a\"\u003e\u003ccode\u003ed1c0d9f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/112\"\u003e#112\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/0434967d158cdb8aa86b0f610d33ba5e798f7b9f\"\u003e\u003ccode\u003e0434967\u003c/code\u003e\u003c/a\u003e Add throughput comparison table to the README benchmark section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/82b9d5b11e05a6abe74f2704f58c6e6bc71198fb\"\u003e\u003ccode\u003e82b9d5b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/111\"\u003e#111\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/ef32a02b31f01e6f1a13f84ff0bf1ac026b70175\"\u003e\u003ccode\u003eef32a02\u003c/code\u003e\u003c/a\u003e Add multi-library throughput benchmark\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/b6ab49e52891793fa4dbaae51290983549821980\"\u003e\u003ccode\u003eb6ab49e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/110\"\u003e#110\u003c/a\u003e from mosquito/fix/close-twice-and-textwrapper-read\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/955abe86f524ffcec09e435b0f17cf320562c9f0\"\u003e\u003ccode\u003e955abe8\u003c/code\u003e\u003c/a\u003e Bump markdown-pytest to ~0.6.5 and refresh other dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/3d8e378cd129aee38f90bf26ad34ae6f1baa9afe\"\u003e\u003ccode\u003e3d8e378\u003c/code\u003e\u003c/a\u003e Add free-threaded Python (3.13t, 3.14t) to the CI test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/31bd742607f0cf54675512e330378ce9b501e590\"\u003e\u003ccode\u003e31bd742\u003c/code\u003e\u003c/a\u003e Add closed attribute to AIOFile and file wrappers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/a84a46e64753664efe69d5ba5947bc92cdde5595\"\u003e\u003ccode\u003ea84a46e\u003c/code\u003e\u003c/a\u003e Fix TextFileWrapper.read() returning more characters than requested\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cde...\n\n_Description has been truncated_","html_url":"https://github.com/aws-solutions-library-samples/guidance-for-game-backend-and-infrastructure-agentic-workflows/pull/357","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-solutions-library-samples%2Fguidance-for-game-backend-and-infrastructure-agentic-workflows/issues/357","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/357/packages"},{"uuid":"5318969026","node_id":"PR_kwDOQUeNIc8AAAABB1Zt5w","number":1218,"state":"closed","title":"build(deps): bump websocket-client from 1.9.0 to 1.9.2","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-09-07T17:31:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T02:24:36.000Z","updated_at":"2026-09-07T17:31:13.000Z","time_to_close":486395,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":null}],"path":null,"ecosystem":"pip"},"body":"## Summary\n\nUpgrade the existing reproducibility-lock pin for websocket-client from 1.9.0 to 1.9.2. The upstream patch releases correct close-frame handling and a close-handshake race, and make malformed redirect/TLS configurations fail explicitly. The retained Jupyter Server 2.20.0 consumer requires websocket-client\u003e=1.7; Python 3.12 satisfies the target's \u003e=3.10 floor.\n\n### Scope\n- [x] One focused, independently revertable change (`DELIVERY-01`): requirements.txt only.\n- [x] KPI impact: **none identified**. No first-party Python import of websocket-client, finance formula, numerical pin, scenario or policy changes.\n- [ ] Changelog fragment: not added; this existing dependency PR retains its one-pin subject. Review, provenance and continuity evidence is persisted externally and in this PR's evidence comments.\n\n### Verification — receipts, not claims\n\nAll local Python commands use `/Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python` (3.12.13), with `DUTCHBAY_VENV` set and active worktree first on `PYTHONPATH`. The shared environment remains unchanged and still has websocket-client1.9.0. Target source tests below load the hash-verified1.9.2 wheel source with that interpreter, without installing another environment.\n\n| Check | Command run | Result |\n|---|---|---|\n| Environment | `DUTCHBAY_VENV=/Users/aruna/Downloads/Dutchbay_EPC_Model/.venv ./check_venv.sh --no-bootstrap` | PASS; Python3.12.13, active worktree imports, no editable/foreign-checkout contamination |\n| Governance | `DUTCHBAY_FLOW_RULESET_CSV=$PWD/go_with_the_flow_rules_v3_0_clean.csv PYTHONPATH=$PWD /Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python dutchbay_bootstrap_rules.py` | 74 active v3.0 rules; full CSV, four RECRUIT-01 modules and pinned frameworks read |\n| Dependency resolution | `/Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python -m pip install --dry-run --disable-pip-version-check -r requirements.txt -c constraints.txt` | exit0; Would install scipy-stubs-1.18.1.0 websocket-client-1.9.2. Unchanged installed packages satisfy other pins; this is not a clean-install proof |\n| Target upstream offline suite | `PYTHONDONTWRITEBYTECODE=1 /Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python /Users/aruna/Downloads/DutchBay_Oldest_First_Programme_2026-09-07/pr1218/validate_upstream_offline.py` (script SHA25678d7e4a431f6c41f1a741b895d6c734c5d2e94c2f3faf81d0e9a141d19ddcebc) | 221 total:195 passed,26 skipped,0 failures/errors. Byte-exact source from PyPI wheel SHA256 e1a673830a9c7bfa47b1cd3d5e4178f4c9651d80a4eab02c9c23a1c3ec6250ce. No live endpoint/server qualification claimed |\n| Hosted target installation and Grid Study | `gh api repos/arunakulat/dutchbay-epc-model/actions/jobs/101820650300/logs --allow-escape-sequences` captured in memory and filtered | exit0; exact head7506b39f18df706b28faec45ceb6d17cdbb2eb12 checked out; websocket-client1.9.2 installed;57 passed,3 skipped,4 warnings. Job success, full log SHA25637fbd352fd3ae85a7147d44d55dfb21136fadc7069e6729cd313e05066e1b5c5 |\n| Lint / Format / Types | Local rerun not run; hosted `Code Quality Checks` on this head | Hosted job101820594786 success; no first-party Python edits |\n| Diff | `git diff --check`; `git diff d56147c HEAD --stat` | exit0; requirements.txt only,1 insertion/1 deletion |\n| Financial regression | Local rerun not run | No finance/numerical change. Full hosted sharded suite and required Test Summary must complete before merge; ordinary CI is not qualification |\n| Independent review | Separate read-only dependency/security and assurance reviewers; full structured receipts and final rebinds in PR evidence comments | Both initial exact-subject dispositions accepted independently; final preserved-record checks and rebinds required before merge |\n| Live service / deployment / release qualification | not run | Outside dependency-delivery scope; no live Jupyter gateway, proxy, credential, deployment or publication authorization |\n\n### What changed\n\nThe original PR proposed1.9.1 at f3aa4b160458afa14878b1b0359a9b7aa0aace1b. Dependabot independently replaced it with1.9.2 at7506b39f18df706b28faec45ceb6d17cdbb2eb12 during read-only ingress. The programme profile was reissued, the new candidate freshly reviewed and no earlier candidate acceptance carried forward. The historical branch name still ends in1.9.1; the actual lock and delivery target are1.9.2.\n\n### Notes\n\nEvidence directory: `/Users/aruna/Downloads/DutchBay_Oldest_First_Programme_2026-09-07/pr1218/`. Original candidate recovery bundle, primary PyPI metadata/wheels, frozen subject manifest, independent reviews, hosted evidence and successor handover are retained there. Exact external review content and hashes are also published in this PR; reviewer rebinds must be independently checked again immediately before merge.\n\nStrict protected current-base policy and all four required contexts remain controlling: Test Summary,fastlane,smoke,Verification receipts (VERIFY-01). A missing context is unsatisfied. Issue1110 stays OPEN; production assembly authority stays empty. All existing release,lender,Board,professional,publication,deployment and HOLD boundaries remain unchanged.\n","html_url":"https://github.com/arunakulat/dutchbay-epc-model/pull/1218","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/arunakulat%2Fdutchbay-epc-model/issues/1218","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1218/packages"},{"uuid":"5318836355","node_id":"PR_kwDOBFHcf88AAAABB1TIaQ","number":2706,"state":"closed","title":"Update websocket-client requirement from !=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 to !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.1","user":"dependabot[bot]","labels":["cncf-cla: yes","size/XS","do-not-merge/release-note-label-needed","needs-kind","dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-09-04T02:02:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T02:03:03.000Z","updated_at":"2026-09-04T02:02:49.000Z","time_to_close":172784,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.1","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\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/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v0.32.0...v1.9.1\"\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/kubernetes-client/python/pull/2706","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-client%2Fpython/issues/2706","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2706/packages"},{"uuid":"5092066374","node_id":"PR_kwDOPbEP8c78IT7O","number":15,"state":"open","title":"deps(deps): update websocket-client requirement from \u003e=1.6.0 to \u003e=1.9.0 in /Finja-music/finja-everything-in-once","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-08-07T16:26:36.000Z","updated_at":"2026-08-07T16:27:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): update","packages":[{"name":"websocket-client","old_version":"\u003e=1.6.0","new_version":"\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":"/Finja-music/finja-everything-in-once","ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.6.0...v1.9.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/JohnV2002/Finja-AI-Ecosystem/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnV2002%2FFinja-AI-Ecosystem/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"4464825372","node_id":"PR_kwDOSIAG287cb6Go","number":45,"state":"open","title":"chore(deps): bump the all group in /gateway with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-17T20:22:22.000Z","updated_at":"2026-05-17T20:23:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"all","update_count":5,"packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockify","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/novnc/websockify"},{"name":"cryptography","old_version":"44.0.0","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"pymupdf","old_version":"1.25.3","new_version":"1.27.2.3","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"}],"path":"/gateway","ecosystem":"pip"},"body":"Bumps the all group in /gateway with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockify](https://github.com/novnc/websockify) | `0.12.0` | `0.13.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `48.0.0` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.3` | `1.27.2.3` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n\nUpdates `websocket-client` 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\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/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websockify` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/novnc/websockify/releases\"\u003ewebsockify's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003ch1\u003eMajor Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Server_Name_Indication\"\u003eSNI\u003c/a\u003e is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\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/novnc/websockify/blob/master/CHANGES.txt\"\u003ewebsockify's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003eSNI is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\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/novnc/websockify/commit/e81894751365afc19fe64fc9d0e5c6fc52655c36\"\u003e\u003ccode\u003ee818947\u003c/code\u003e\u003c/a\u003e websockify 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0d519b9c18139bcdee7f1bdb9dc785be26bdab29\"\u003e\u003ccode\u003e0d519b9\u003c/code\u003e\u003c/a\u003e Fix fake headers dict in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/187e204ce403e7aac0ea67348eaad012a68f10bb\"\u003e\u003ccode\u003e187e204\u003c/code\u003e\u003c/a\u003e Clear out sensitive fake headers from client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/417210f2cf8db9cd3cd9d86c45ef954778176b0e\"\u003e\u003ccode\u003e417210f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/so-saf/websockify\"\u003ehttps://github.com/so-saf/websockify\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/245fd08e52604c76e877c94da1dc286f87c90c75\"\u003e\u003ccode\u003e245fd08\u003c/code\u003e\u003c/a\u003e Use standard line endings in sysloghandler.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/3f205f7cc6131368631c8b0cb17c3aa5689507e9\"\u003e\u003ccode\u003e3f205f7\u003c/code\u003e\u003c/a\u003e drop python\u0026lt;3.6 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0af3404ec91ae827275af0a8e474add5afffaf81\"\u003e\u003ccode\u003e0af3404\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/5989d31ebf1a84bc6c6bdb7b32b4a9ea5437f36d\"\u003e\u003ccode\u003e5989d31\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/b6c02b13e3ce706dff6f96f754ef1682d9062258\"\u003e\u003ccode\u003eb6c02b1\u003c/code\u003e\u003c/a\u003e Include host in TLS setup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/f632fa0285181c1ff1a39c9c4b36795e3f6d9373\"\u003e\u003ccode\u003ef632fa0\u003c/code\u003e\u003c/a\u003e Use SSLContext.wrap_context() for SSL/TLS sockets\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/novnc/websockify/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 44.0.0 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\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/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymupdf` from 1.25.3 to 1.27.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/pymupdf/releases\"\u003epymupdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.3 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4928\"\u003e#4928\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4942\"\u003e#4942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4958\"\u003e#4958\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4902\"\u003e#4902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4932\"\u003e#4932\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on \u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/PyMuPDF/blob/main/changes.txt\"\u003epymupdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange Log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e (2026-04-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4928 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4928\u0026gt;\u003c/code\u003e_: pymupdf.Document.scrub raises AttributeError for a document with annotations\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4942 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4942\u0026gt;\u003c/code\u003e_: bug: IndexError for Page.get_links after Page.clip_to_rect\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4954 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4954\u0026gt;\u003c/code\u003e_: get_drawings() returns incorrect lineJoin and width\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4958 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4958\u0026gt;\u003c/code\u003e_: bug: inserting rotated pages to another document messes up link coordinates\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e (2026-03-20)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4902 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4902\u0026gt;\u003c/code\u003e_: Incorrect linewidth in elements returned by Page.get_texttrace()\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4932 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4932\u0026gt;\u003c/code\u003e_: \u0026quot;Page\u0026quot; has no attribute \u0026quot;find_tables\u0026quot; in PyMuPDF 1.27\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.\u003c/strong\u003e (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUse MuPDF-1.27.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4903 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4903\u0026gt;\u003c/code\u003e_: Typing broken because of \u003ccode\u003e*_forward_decl\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRetrospectively marked \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4907\"\u003e#4907\u003c/a\u003e as fixed in pymupdf-1.27.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eget_textpage_ocr()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor partial OCR, \u003cstrong\u003eall\u003c/strong\u003e page areas outside legible text are now OCRed, not\njust those within images. This means that OCR will now also be performed\nfor vector graphics, and for text containing illegible characters.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a Linux wheel for free-threading python,\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/bf51516c1b1146d357e3705473f7dea6a405a589\"\u003e\u003ccode\u003ebf51516\u003c/code\u003e\u003c/a\u003e Update version to 1.27.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/e5bddbbf4f4633ce2b6261f18ab6c9fb8a8bb857\"\u003e\u003ccode\u003ee5bddbb\u003c/code\u003e\u003c/a\u003e scripts/ tests/: updated to match new location of pipcl.py in src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/eda615d19e56ca9b7123b0030773fea3a3cf8dc6\"\u003e\u003ccode\u003eeda615d\u003c/code\u003e\u003c/a\u003e Move pipcl.py and wdev.py into src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/a7fe8b3683cda27684a5863a2de38e2b80165feb\"\u003e\u003ccode\u003ea7fe8b3\u003c/code\u003e\u003c/a\u003e changes.txt: updates for next release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/61da30ac418846be0b0a559ca407a3ad786f5d5f\"\u003e\u003ccode\u003e61da30a\u003c/code\u003e\u003c/a\u003e tests/test_drawings.py: New tests for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e: test_4954_1() test_4954_2().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/5445fc01c6edb3397df2768febddf4da9802d9ae\"\u003e\u003ccode\u003e5445fc0\u003c/code\u003e\u003c/a\u003e docs/conf.py: change how we look for version numbers in setup.py and scripts/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/1792ef0da7f801865e79278d1644b31de96c50f5\"\u003e\u003ccode\u003e1792ef0\u003c/code\u003e\u003c/a\u003e pyproject.toml: require package pipcl for building.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/237f0976fa75fd010ab5d838dc1ce714d7cd87ce\"\u003e\u003ccode\u003e237f097\u003c/code\u003e\u003c/a\u003e tests/: fix tests if we are incorrectly claiming to be thread safe.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/cd89bb04ee92c6e1f831bb5ae6d84ddd296987e4\"\u003e\u003ccode\u003ecd89bb0\u003c/code\u003e\u003c/a\u003e tests/conftest.py: also install pipcl, as we move to using pipcl package.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/341eab2d3b10a03cdd34b64a6acaeb38f43e8d9b\"\u003e\u003ccode\u003e341eab2\u003c/code\u003e\u003c/a\u003e setup.py: added support for incorrectly claiming to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pymupdf/pymupdf/compare/1.25.3...1.27.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-docx` from 1.1.2 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-openxml/python-docx/blob/master/HISTORY.rst\"\u003epython-docx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2025-06-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for comments\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8, add testing for Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e45454602b53e8e572b179ccf1c91093ec9f4ed7\"\u003e\u003ccode\u003ee454546\u003c/code\u003e\u003c/a\u003e release: prepare v1.2.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/1fe660198aab18a421c95d019f53b2aa22d2fe2f\"\u003e\u003ccode\u003e1fe6601\u003c/code\u003e\u003c/a\u003e build: small adjustments for tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/4fbe1f684e08aa7eebb0ce6bfedfce512b5c95a2\"\u003e\u003ccode\u003e4fbe1f6\u003c/code\u003e\u003c/a\u003e docs: add Comments docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/a809d6cc8aec18648850d8b94d554f05621e433a\"\u003e\u003ccode\u003ea809d6c\u003c/code\u003e\u003c/a\u003e comments: add Comment.text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e3a321d26195fdd6e368f59b63be06b1277dac14\"\u003e\u003ccode\u003ee3a321d\u003c/code\u003e\u003c/a\u003e comments: add Run.mark_comment_range()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/af3b973dd2c938f6851537978fe76f4f5e91dcc9\"\u003e\u003ccode\u003eaf3b973\u003c/code\u003e\u003c/a\u003e comments: add Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/66da52204db395466cc7ea033af0f5bffd228953\"\u003e\u003ccode\u003e66da522\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/761f4ccd7751afeeaa5fff5c6f47325c3e0970fa\"\u003e\u003ccode\u003e761f4cc\u003c/code\u003e\u003c/a\u003e comments: add Comment.author, .initials setters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/8ac9fc4f6b50b9b7f208974e853f1995d63a834a\"\u003e\u003ccode\u003e8ac9fc4\u003c/code\u003e\u003c/a\u003e comments: add Comments.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/d360409273a9fdfd2d6a26a7f35b8f3bfc781f04\"\u003e\u003ccode\u003ed360409\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Comment mutations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-openxml/python-docx/compare/v1.1.2...v1.2.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/yourhq/yourhq/pull/45","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/yourhq%2Fyourhq/issues/45","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/45/packages"}],"issue_packages":[{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-22T06:23:30.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5536027477","node_id":"PR_kwDONC03Hc8AAAABEiBuuw","number":4260,"state":"open","title":"build(deps): bump the python group with 85 updates","user":"dependabot[bot]","labels":["backport:skip","dependencies","python:uv","first-time-contributor"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-22T06:23:30.000Z","updated_at":"2026-09-22T06:33:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":85,"packages":[{"name":"pin-pink","old_version":"4.3.0","new_version":"4.4.0","repository_url":"https://github.com/stephane-caron/pink"},{"name":"reactivex","old_version":"4.1.0","new_version":"5.1.0","repository_url":"https://github.com/ReactiveX/RxPY"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"packaging","old_version":"25.0","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"filelock","old_version":"3.23.0","new_version":"3.32.6","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"plum-dispatch","old_version":"2.5.7","new_version":"2.10.1","repository_url":"https://github.com/beartype/plum"},{"name":"gitpython","old_version":"3.1.52","new_version":"3.1.62","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"structlog","old_version":"25.5.0","new_version":"26.1.0","repository_url":"https://github.com/hynek/structlog"},{"name":"opencv-contrib-python","old_version":"4.13.0.92","new_version":"5.0.0.93","repository_url":"https://github.com/opencv/opencv-python"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"textual","old_version":"3.7.1","new_version":"8.2.8","repository_url":"https://github.com/Textualize/textual"},{"name":"terminaltexteffects","old_version":"0.12.2","new_version":"0.15.0","repository_url":"https://github.com/ChrisBuilds/terminaltexteffects"},{"name":"typer","old_version":"0.23.1","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"ipython","old_version":"8.38.0","new_version":"8.39.0","repository_url":"https://github.com/ipython/ipython"},{"name":"plotext","old_version":"5.3.2","new_version":"6.1.0","repository_url":"https://github.com/piccolomo/plotext"},{"name":"numba","old_version":"0.63.1","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"llvmlite","old_version":"0.46.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"rerun-sdk","old_version":"0.32.0","new_version":"0.37.2","repository_url":"https://github.com/rerun-io/rerun"},{"name":"protobuf","old_version":"6.33.5","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"cryptography","old_version":"46.0.5","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"ipykernel","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"open-clip-torch","old_version":"3.2.0","new_version":"3.3.0","repository_url":"https://github.com/mlfoundations/open_clip"},{"name":"gdown","old_version":"6.0.0","new_version":"6.2.0","repository_url":"https://github.com/wkentaro/gdown"},{"name":"tensorboard","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/tensorflow/tensorboard"},{"name":"portal","old_version":"3.7.4","new_version":"3.8.1","repository_url":"https://github.com/danijar/portal"},{"name":"bosdyn-client","old_version":"5.1.4","new_version":"5.2.0","repository_url":"https://github.com/boston-dynamics/spot-sdk"},{"name":"bosdyn-api","old_version":"5.1.4","new_version":"5.2.0","repository_url":"https://github.com/boston-dynamics/spot-sdk"},{"name":"bosdyn-core","old_version":"5.1.4","new_version":"5.2.0","repository_url":"https://github.com/boston-dynamics/spot-sdk"},{"name":"pyarrow","old_version":"23.0.0","new_version":"25.0.1","repository_url":"https://github.com/apache/arrow"},{"name":"langchain-core","old_version":"1.3.3","new_version":"1.6.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.1.6","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-huggingface","old_version":"1.2.0","new_version":"1.2.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-ollama","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"ollama","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/ollama/ollama-python"},{"name":"openai","old_version":"2.21.0","new_version":"3.14.0","repository_url":"https://github.com/openai/openai-python"},{"name":"sounddevice","old_version":"0.5.5","new_version":"0.5.6","repository_url":"https://github.com/spatialaudio/python-sounddevice"},{"name":"fastapi","old_version":"0.129.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"python-socketio","old_version":"5.16.1","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"python-multipart","old_version":"0.0.27","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"sse-starlette","old_version":"3.2.0","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.53.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"soundfile","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"timm","old_version":"1.0.24","new_version":"1.0.29","repository_url":"https://github.com/huggingface/pytorch-image-models"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"lap","old_version":"0.5.12","new_version":"0.5.13","repository_url":"https://github.com/gatagat/lap"},{"name":"transformers","old_version":"4.53.3","new_version":"5.17.0"},{"name":"moondream","old_version":"0.2.0","new_version":"2.3.0","repository_url":"https://github.com/vikhyat/moondream"},{"name":"omegaconf","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/omry/omegaconf"},{"name":"hydra-core","old_version":"1.3.2","new_version":"1.3.7","repository_url":"https://github.com/facebookresearch/hydra"},{"name":"unitree-webrtc-connect","old_version":"2.1.2","new_version":"2.2.0","repository_url":"https://github.com/legion1581/unitree_webrtc_connect"},{"name":"cyclonedds","old_version":"0.10.5","new_version":"11.0.1","repository_url":"https://github.com/eclipse-cyclonedds/cyclonedds-python"},{"name":"mcap","old_version":"1.3.1","new_version":"1.4.0","repository_url":"https://github.com/foxglove/mcap"},{"name":"piper-sdk","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/agilexrobotics/piper_sdk"},{"name":"xarm-python-sdk","old_version":"1.17.3","new_version":"1.18.4","repository_url":"https://github.com/xArm-Developer/xArm-Python-SDK"},{"name":"roboplan","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/open-planning/roboplan"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"cupy-cuda12x","old_version":"13.6.0","new_version":"14.2.0","repository_url":"https://github.com/cupy/cupy"},{"name":"mujoco","old_version":"3.10.0","new_version":"3.13.0","repository_url":"https://github.com/google-deepmind/mujoco"},{"name":"gtsam-extended","old_version":"4.3a1.post1","new_version":"4.3a2.post202608240418"},{"name":"aiortc","old_version":"1.14.0","new_version":"1.15.0","repository_url":"https://github.com/aiortc/aiortc"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"reportlab","old_version":"4.5.0","new_version":"5.0.1"},{"name":"manifold3d","old_version":"3.5.1","new_version":"3.5.3","repository_url":"https://github.com/elalish/manifold"},{"name":"coacd","old_version":"1.0.11","new_version":"1.0.14","repository_url":"https://github.com/SarahWeiii/CoACD"},{"name":"usd-core","old_version":"26.5","new_version":"26.8","repository_url":"https://github.com/PixarAnimationStudios/OpenUSD"},{"name":"ruff","old_version":"0.14.3","new_version":"0.16.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"8.3.5","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.15.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"pytest-env","old_version":"1.1.5","new_version":"1.7.1","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pytest-rerunfailures","old_version":"16.4","new_version":"16.6.1","repository_url":"https://github.com/pytest-dev/pytest-rerunfailures"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"py-spy","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/benfred/py-spy"},{"name":"maturin","old_version":"1.13.3","new_version":"1.15.0","repository_url":"https://github.com/pyo3/maturin"},{"name":"python-lsp-server","old_version":"1.14.0","new_version":"1.15.0"},{"name":"python-lsp-ruff","old_version":"2.3.0","new_version":"2.3.4","repository_url":"https://github.com/python-lsp/python-lsp-ruff"},{"name":"playwright","old_version":"1.61.0","new_version":"1.62.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"mypy","old_version":"1.19.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260906","repository_url":"https://github.com/python/typeshed"},{"name":"types-reportlab","old_version":"4.5.0.20260509","new_version":"5.0.0.20260911","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260906","repository_url":"https://github.com/python/typeshed"},{"name":"pybind11","old_version":"3.0.4","new_version":"3.1.0","repository_url":"https://github.com/pybind/pybind11"},{"name":"optuna","old_version":"4.9.0","new_version":"5.0.0","repository_url":"https://github.com/optuna/optuna"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 85 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pin-pink](https://github.com/stephane-caron/pink) | `4.3.0` | `4.4.0` |\n| [reactivex](https://github.com/ReactiveX/RxPY) | `4.1.0` | `5.1.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.23.0` | `3.32.6` |\n| [plum-dispatch](https://github.com/beartype/plum) | `2.5.7` | `2.10.1` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.52` | `3.1.62` |\n| [structlog](https://github.com/hynek/structlog) | `25.5.0` | `26.1.0` |\n| [opencv-contrib-python](https://github.com/opencv/opencv-python) | `4.13.0.92` | `5.0.0.93` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.15.0` |\n| [textual](https://github.com/Textualize/textual) | `3.7.1` | `8.2.8` |\n| [terminaltexteffects](https://github.com/ChrisBuilds/terminaltexteffects) | `0.12.2` | `0.15.0` |\n| [typer](https://github.com/fastapi/typer) | `0.23.1` | `0.27.2` |\n| [ipython](https://github.com/ipython/ipython) | `8.38.0` | `8.39.0` |\n| [plotext](https://github.com/piccolomo/plotext) | `5.3.2` | `6.1.0` |\n| [numba](https://github.com/numba/numba) | `0.63.1` | `0.67.0` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.46.0` | `0.49.0` |\n| [rerun-sdk](https://github.com/rerun-io/rerun) | `0.32.0` | `0.37.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.33.5` | `7.36.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.5` | `50.0.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `7.2.0` | `7.3.0` |\n| [open-clip-torch](https://github.com/mlfoundations/open_clip) | `3.2.0` | `3.3.0` |\n| [gdown](https://github.com/wkentaro/gdown) | `6.0.0` | `6.2.0` |\n| [tensorboard](https://github.com/tensorflow/tensorboard) | `2.20.0` | `2.21.0` |\n| [portal](https://github.com/danijar/portal) | `3.7.4` | `3.8.1` |\n| [bosdyn-client](https://github.com/boston-dynamics/spot-sdk) | `5.1.4` | `5.2.0` |\n| [bosdyn-api](https://github.com/boston-dynamics/spot-sdk) | `5.1.4` | `5.2.0` |\n| [bosdyn-core](https://github.com/boston-dynamics/spot-sdk) | `5.1.4` | `5.2.0` |\n| [pyarrow](https://github.com/apache/arrow) | `23.0.0` | `25.0.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.3.3` | `1.6.3` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.1.6` | `1.6.2` |\n| [langchain-huggingface](https://github.com/langchain-ai/langchain) | `1.2.0` | `1.2.2` |\n| [langchain-ollama](https://github.com/langchain-ai/langchain) | `1.0.1` | `1.1.0` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.1` | `0.6.2` |\n| [openai](https://github.com/openai/openai-python) | `2.21.0` | `3.14.0` |\n| [sounddevice](https://github.com/spatialaudio/python-sounddevice) | `0.5.5` | `0.5.6` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.129.0` | `0.141.1` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.16.1` | `5.17.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.27` | `0.0.32` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.2.0` | `3.4.11` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.53.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.13.1` | `0.14.0` |\n| [timm](https://github.com/huggingface/pytorch-image-models) | `1.0.24` | `1.0.29` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [lap](https://github.com/gatagat/lap) | `0.5.12` | `0.5.13` |\n| [transformers[torch]](https://github.com/huggingface/transformers) | `4.53.3` | `5.17.0` |\n| [moondream](https://github.com/vikhyat/moondream) | `0.2.0` | `2.3.0` |\n| [omegaconf](https://github.com/omry/omegaconf) | `2.3.0` | `2.3.1` |\n| [hydra-core](https://github.com/facebookresearch/hydra) | `1.3.2` | `1.3.7` |\n| [unitree-webrtc-connect](https://github.com/legion1581/unitree_webrtc_connect) | `2.1.2` | `2.2.0` |\n| [cyclonedds](https://github.com/eclipse-cyclonedds/cyclonedds-python) | `0.10.5` | `11.0.1` |\n| [mcap](https://github.com/foxglove/mcap) | `1.3.1` | `1.4.0` |\n| [piper-sdk](https://github.com/agilexrobotics/piper_sdk) | `0.6.1` | `0.6.2` |\n| [xarm-python-sdk](https://github.com/xArm-Developer/xArm-Python-SDK) | `1.17.3` | `1.18.4` |\n| [roboplan](https://github.com/open-planning/roboplan) | `0.6.0` | `0.6.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [cupy-cuda12x](https://github.com/cupy/cupy) | `13.6.0` | `14.2.0` |\n| [mujoco](https://github.com/google-deepmind/mujoco) | `3.10.0` | `3.13.0` |\n| [gtsam-extended](https://gtsam.org/) | `4.3a1.post1` | `4.3a2.post202608240418` |\n| [aiortc](https://github.com/aiortc/aiortc) | `1.14.0` | `1.15.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [reportlab](https://www.reportlab.com/) | `4.5.0` | `5.0.1` |\n| [manifold3d](https://github.com/elalish/manifold) | `3.5.1` | `3.5.3` |\n| [coacd](https://github.com/SarahWeiii/CoACD) | `1.0.11` | `1.0.14` |\n| [usd-core](https://github.com/PixarAnimationStudios/OpenUSD) | `26.5` | `26.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.3` | `0.16.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.1.1` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.0` | `3.15.1` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.1.5` | `1.7.1` |\n| [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) | `16.4` | `16.6.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.6.2` |\n| [py-spy](https://github.com/benfred/py-spy) | `0.4.1` | `0.4.2` |\n| [maturin](https://github.com/pyo3/maturin) | `1.13.3` | `1.15.0` |\n| [python-lsp-server[all]](https://github.com/python-lsp/python-lsp-server) | `1.14.0` | `1.15.0` |\n| [python-lsp-ruff](https://github.com/python-lsp/python-lsp-ruff) | `2.3.0` | `2.3.4` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.61.0` | `1.62.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.0` | `2.3.1` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260906` |\n| [types-reportlab](https://github.com/python/typeshed) | `4.5.0.20260509` | `5.0.0.20260911` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260906` |\n| [pybind11](https://github.com/pybind/pybind11) | `3.0.4` | `3.1.0` |\n| [optuna](https://github.com/optuna/optuna) | `4.9.0` | `5.0.0` |\n\nUpdates `pin-pink` from 4.3.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stephane-caron/pink/releases\"\u003epin-pink's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.4.0\u003c/h2\u003e\n\u003cp\u003eThis release allows custom boundaries in velocity limits, allowing bounds on joints that can't have a limit from their URDF model (such as continuous joints).\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit: Allow custom boundaries in \u003ccode\u003eVelocityLimit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003edocs: Document assumption that we start from a feasible configuration\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/pink-kinematics/pink/blob/main/CHANGELOG.md\"\u003epin-pink's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.4.0] - 2026-09-09\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit: Allow custom boundaries in \u003ccode\u003eVelocityLimit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003edocs: Document assumption that we start from a feasible configuration\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/pink-kinematics/pink/commit/c14d0ae62f4fb744bbe84e35f9e16f1b680b20c0\"\u003e\u003ccode\u003ec14d0ae\u003c/code\u003e\u003c/a\u003e Release v4.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/5c890570ee42d397f03d1cf8e1b8f4a9797bde97\"\u003e\u003ccode\u003e5c89057\u003c/code\u003e\u003c/a\u003e doc: Add context to configuration limit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/7df4f5a323c423b591ff3c35c7e66df40ff9c197\"\u003e\u003ccode\u003e7df4f5a\u003c/code\u003e\u003c/a\u003e Update link to CBF note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/bfd30c7aec222b66fb36629c20439bedb223d161\"\u003e\u003ccode\u003ebfd30c7\u003c/code\u003e\u003c/a\u003e lint: Apply pylint recos in FrameTask\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/e71a42bd424680b039b782de1392b0b7ec2307d9\"\u003e\u003ccode\u003ee71a42b\u003c/code\u003e\u003c/a\u003e lint: Fix pylint recos in ManipulabilityTask\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/a7ac5aa23b591fc203fbdc636d88c1a9b410375c\"\u003e\u003ccode\u003ea7ac5aa\u003c/code\u003e\u003c/a\u003e pixi: Group linting tasks, add format task\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/771c0e0a5d80107771525321927eebb28fbc3400\"\u003e\u003ccode\u003e771c0e0\u003c/code\u003e\u003c/a\u003e lint: Fix two pylint errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/f568e80536549a3b7f627468eb29526d3404c85b\"\u003e\u003ccode\u003ef568e80\u003c/code\u003e\u003c/a\u003e Update type of velocity_limit attribute\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/232c9c0b76db644c212c1e9caa33bda345cb4dd2\"\u003e\u003ccode\u003e232c9c0\u003c/code\u003e\u003c/a\u003e minor: Removed comes before Fixed in Keep a Changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pink-kinematics/pink/commit/3b60614b5f25ed8c1ed0f1fc596ec19133665035\"\u003e\u003ccode\u003e3b60614\u003c/code\u003e\u003c/a\u003e Update the changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stephane-caron/pink/compare/v4.3.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `reactivex` from 4.1.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/ReactiveX/RxPY/releases\"\u003ereactivex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev5.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev5.0.0rc2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev5.0.0a2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix title header by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/744\"\u003eReactiveX/RxPY#744\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ReactiveX/RxPY/compare/v5.0.0a1...v5.0.0a2\"\u003ehttps://github.com/ReactiveX/RxPY/compare/v5.0.0a1...v5.0.0a2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.0.0a1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGive run a scheduler parameter by \u003ca href=\"https://github.com/rmahfoud\"\u003e\u003ccode\u003e@​rmahfoud\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/731\"\u003eReactiveX/RxPY#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid use of asyncio.get_event_loop (3.14) by \u003ca href=\"https://github.com/traylenator\"\u003e\u003ccode\u003e@​traylenator\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/728\"\u003eReactiveX/RxPY#728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to uv by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/738\"\u003eReactiveX/RxPY#738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to ruff by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/739\"\u003eReactiveX/RxPY#739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pyright by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/740\"\u003eReactiveX/RxPY#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix subscribe_on not forwarding scheduler to the source  by \u003ca href=\"https://github.com/jcafhe\"\u003e\u003ccode\u003e@​jcafhe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/726\"\u003eReactiveX/RxPY#726\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade deps by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/741\"\u003eReactiveX/RxPY#741\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarify what you can do with the .subscribe Disposable by \u003ca href=\"https://github.com/tmewett\"\u003e\u003ccode\u003e@​tmewett\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/686\"\u003eReactiveX/RxPY#686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRxPY v5 by \u003ca href=\"https://github.com/dbrattli\"\u003e\u003ccode\u003e@​dbrattli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/743\"\u003eReactiveX/RxPY#743\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/rmahfoud\"\u003e\u003ccode\u003e@​rmahfoud\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/731\"\u003eReactiveX/RxPY#731\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tmewett\"\u003e\u003ccode\u003e@​tmewett\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/pull/686\"\u003eReactiveX/RxPY#686\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ReactiveX/RxPY/compare/v4.1.0...v5.0.0a1\"\u003ehttps://github.com/ReactiveX/RxPY/compare/v4.1.0...v5.0.0a1\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/ReactiveX/RxPY/blob/master/CHANGELOG.md\"\u003ereactivex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.0 - 2026-07-27\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(operators)\u003c/em\u003e Add tap as an alias for do_action (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/804\"\u003e#804\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/95c54ac3652aed2bf78035c9846cb5867ee58172\"\u003e95c54ac3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(gtk)\u003c/em\u003e Call gi.require_version before importing gi.repository (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/749\"\u003e#749\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/2b9e3f338246acb7b0037c2a2d9b0882a980ce62\"\u003e2b9e3f33\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(operators)\u003c/em\u003e Accept concurrent.futures.Future wherever futures are accepted (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/806\"\u003e#806\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/19da6ac1487e97bb973fcc4dafc69cee4a1e12a7\"\u003e19da6ac1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cem\u003e(scheduler)\u003c/em\u003e Use wall clock time for now() in event loop schedulers (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/809\"\u003e#809\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/361951c7237ae100f33f81e89144935adb281509\"\u003e361951c7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/10ccc0a3deba0d004a8f9b6079802ffdb73d1edd..b286407307ace6670f6f0072a8438bc912165d43\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch2\u003e5.0.0 - 2026-07-20\u003c/h2\u003e\n\u003ch3\u003e🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(scripts)\u003c/em\u003e Keep uv.lock in sync and scope the version sed to [project] (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/802\"\u003e#802\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/10ccc0a3deba0d004a8f9b6079802ffdb73d1edd\"\u003e10ccc0a3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/915311e3e002b933f2eb4d59c9eac1cab327ff78..10ccc0a3deba0d004a8f9b6079802ffdb73d1edd\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch2\u003e5.0.0-rc.2 - 2026-07-20\u003c/h2\u003e\n\u003ch3\u003e🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cem\u003e(operators)\u003c/em\u003e Reset retry budget per subscription to fix retry+repeat (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/765\"\u003e#765\u003c/a\u003e) (\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/c3f19d5e83403f70d44331daf0b5a86d410f76d4\"\u003ec3f19d5e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/2975deb528c9eec73c76cf8bb53fc8780f31de45..915311e3e002b933f2eb4d59c9eac1cab327ff78\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch2\u003e5.0.0-rc.1 - 2026-04-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/compare/8b59bc7394f1b6a8a78e2fc4b5efe200d4f47f89..2975deb528c9eec73c76cf8bb53fc8780f31de45\"\u003eView changes on Github\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTyping: Added \u003ccode\u003eAction\u003c/code\u003e and \u003ccode\u003eStartableFactory\u003c/code\u003e to \u003ccode\u003ereactivex.typing.__all__\u003c/code\u003e,\nmaking them part of the explicit public API surface.\u003c/li\u003e\n\u003cli\u003eDocs: Added missing docstring to \u003ccode\u003eon_error_resume_next\u003c/code\u003e operator.\u003c/li\u003e\n\u003cli\u003eOperators: Fixed scheduler forwarding in \u003ccode\u003epairwise\u003c/code\u003e, \u003ccode\u003eto_marbles\u003c/code\u003e, and\n\u003ccode\u003edelay_with_mapper\u003c/code\u003e (subscription-delay path). These operators now pass the\n\u003ccode\u003escheduler\u003c/code\u003e argument through to \u003ccode\u003esource.subscribe(...)\u003c/code\u003e and, in the case of\n\u003ccode\u003edelay_with_mapper\u003c/code\u003e, to the subscription-delay observable, consistent with\nall other pipeable operators. Closes \u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/480\"\u003e#480\u003c/a\u003e (partial — the operators listed\nin the issue that were not yet fixed).\u003c/li\u003e\n\u003cli\u003eCI: Skip \u003ccode\u003etests/test_scheduler/test_mainloop/test_tkinterscheduler.py\u003c/code\u003e on\nPyPy (all platforms). The module creates a Tk root at import time; PyPy's\n\u003ccode\u003e_tkinter\u003c/code\u003e finalizer calls \u003ccode\u003ethreading.notify_all\u003c/code\u003e during interpreter\nshutdown and aborts the xdist worker, failing whichever unrelated test\nwas running. Previously guarded only on macOS+PyPy.\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ereactivex.timer(duetime, period)\u003c/code\u003e now correctly resets the initial\ndelay on each resubscription (e.g. via \u003ccode\u003erepeat()\u003c/code\u003e). Previously `nonlocal\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/ReactiveX/RxPY/commit/bbfecfbf83605f2bb2beb8b887dfe5b5fb322a67\"\u003e\u003ccode\u003ebbfecfb\u003c/code\u003e\u003c/a\u003e chore: release reactivex@5.1.0 (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/805\"\u003e#805\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/b286407307ace6670f6f0072a8438bc912165d43\"\u003e\u003ccode\u003eb286407\u003c/code\u003e\u003c/a\u003e docs: correct and expand the GIL free-threading note (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/811\"\u003e#811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/93a4f0417fe5d1d187dbd2d0dfdf2ef3b481c45c\"\u003e\u003ccode\u003e93a4f04\u003c/code\u003e\u003c/a\u003e docs: explain how to parallelize work within a single stream (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/810\"\u003e#810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/2271867415d4beaed62e6f0441fd3312e47079aa\"\u003e\u003ccode\u003e2271867\u003c/code\u003e\u003c/a\u003e Revise GIL section for Python 3.13 updates (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/361951c7237ae100f33f81e89144935adb281509\"\u003e\u003ccode\u003e361951c\u003c/code\u003e\u003c/a\u003e fix(scheduler): use wall clock time for now() in event loop schedulers (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/b809222be63e235f439f65794dd1d4291556d072\"\u003e\u003ccode\u003eb809222\u003c/code\u003e\u003c/a\u003e docs: read version from pyproject instead of git tags (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/808\"\u003e#808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/19e808000610335b4f6d0e0c739b59372b8b5a5f\"\u003e\u003ccode\u003e19e8080\u003c/code\u003e\u003c/a\u003e ci(deps): bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/807\"\u003e#807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/dd9b8ec0185ade72dcb3aac983cd495f21ca0a6d\"\u003e\u003ccode\u003edd9b8ec\u003c/code\u003e\u003c/a\u003e refactor(combine-latest): simplify logic by removing redundant loops … (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/19da6ac1487e97bb973fcc4dafc69cee4a1e12a7\"\u003e\u003ccode\u003e19da6ac\u003c/code\u003e\u003c/a\u003e fix(operators): accept concurrent.futures.Future wherever futures are accepte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxPY/commit/2b9e3f338246acb7b0037c2a2d9b0882a980ce62\"\u003e\u003ccode\u003e2b9e3f3\u003c/code\u003e\u003c/a\u003e fix(gtk): call gi.require_version before importing gi.repository (\u003ca href=\"https://redirect.github.com/ReactiveX/RxPY/issues/749\"\u003e#749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ReactiveX/RxPY/compare/v4.1.0...v5.1.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.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a public \u003ccode\u003eVersionRange\u003c/code\u003e API and \u003ccode\u003eSpecifierSet.to_range()\u003c/code\u003e, representing the versions a specifier set accepts as an interval set that supports intersection, union, difference, complement, set relations, membership tests, and filtering. \u003ccode\u003eVersionRange.to_specifier_set()\u003c/code\u003e converts a range back to a \u003ccode\u003eSpecifierSet\u003c/code\u003e where a PEP 440 form exists. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1267\"\u003e#1267\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1194\"\u003e#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer source distributions over wheels for selected packages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epure_python_tags()\u003c/code\u003e to generate the pure-Python tags for a Python version without touching the running platform. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_subset()\u003c/code\u003e, \u003ccode\u003eSpecifierSet.is_superset()\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.is_disjoint()\u003c/code\u003e, which compare the versions two specifier sets accept. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBehavior adaptations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1157\"\u003e#1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e tags on Linux. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for versions and specifiers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a non-string. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to \u003ccode\u003eVersion.from_parts\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary intersections. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for requirements and markers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for trailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and \u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in sets and dicts. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize requested extra names before comparing or hashing requirements. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/644\"\u003e#644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve a \u003ccode\u003eRequirement\u003c/code\u003e's specifier \u003ccode\u003eprereleases\u003c/code\u003e override across a pickle round trip. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1204\"\u003e#1204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of \u003ccode\u003eInvalidSpecifier\u003c/code\u003e when a requirement contains an invalid specifier. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1332\"\u003e#1332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify the error for post-release prefix wildcards like \u003ccode\u003e==1.0.post1.*\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1299\"\u003e#1299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve quoting semantics when serializing marker values, so round-tripped markers parse back to the same marker. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeep the parentheses of a nested group when serializing markers. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eextra\u003c/code\u003e and \u003ccode\u003edependency_groups\u003c/code\u003e values in nested markers at parse time. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1246\"\u003e#1246\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedComparison\u003c/code\u003e when a set-valued variable like \u003ccode\u003eextras\u003c/code\u003e is used outside the membership form. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1265\"\u003e#1265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedEnvironmentName\u003c/code\u003e (a \u003ccode\u003eKeyError\u003c/code\u003e subclass) for missing environment keys during marker evaluation. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap malformed string literal errors in \u003ccode\u003eInvalidMarker\u003c/code\u003e / \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of leaking a low-level error. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1249\"\u003e#1249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject requirements and markers with a trailing line break. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1345\"\u003e#1345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for metadata and licenses\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCollect all \u003ccode\u003efrom_email\u003c/code\u003e validation errors into one \u003ccode\u003eExceptionGroup\u003c/code\u003e instead of raising the first. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1268\"\u003e#1268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept the UTF-8 charset case-insensitively in email payloads. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1330\"\u003e#1330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject malformed \u003ccode\u003eDescription-Content-Type\u003c/code\u003e values. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1329\"\u003e#1329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't rewrite user values that contain \u003ccode\u003e{field}\u003c/code\u003e placeholders in error messages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1327\"\u003e#1327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRoute multipart email payloads to \u003ccode\u003eunparsed\u003c/code\u003e instead of asserting. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eInvalidMetadata\u003c/code\u003e and \u003ccode\u003eCyclicDependencyGroup\u003c/code\u003e picklable. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1328\"\u003e#1328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFold every line boundary \u003ccode\u003estr.splitlines\u003c/code\u003e recognizes when writing a header with \u003ccode\u003eRFC822Message\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1356\"\u003e#1356\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/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.3 - 2026-08-03\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003eAdd a public :class:\u003ccode\u003e~packaging.ranges.VersionRange\u003c/code\u003e API and\u003cbr /\u003e\n:meth:\u003ccode\u003eSpecifierSet.to_range() \u0026amp;lt;packaging.specifiers.SpecifierSet.to_range\u0026amp;gt;\u003c/code\u003e,\u003cbr /\u003e\nrepresenting the versions a specifier set accepts as an interval set that\u003cbr /\u003e\nsupports intersection, union, difference, complement, set relations,\u003cbr /\u003e\nmembership tests, and filtering.\u003cbr /\u003e\n:meth:\u003ccode\u003e~packaging.ranges.VersionRange.to_specifier_set\u003c/code\u003e converts a range back\u003cbr /\u003e\nto a :class:\u003ccode\u003e~packaging.specifiers.SpecifierSet\u003c/code\u003e where a PEP 440 form exists.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1267\u003c/code\u003e, :pull:\u003ccode\u003e1270\u003c/code\u003e, :pull:\u003ccode\u003e1298\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (:pull:\u003ccode\u003e1194\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets.\u003cbr /\u003e\n(:issue:\u003ccode\u003e1220\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer\u003cbr /\u003e\nsource distributions over wheels for selected packages. (:pull:\u003ccode\u003e1334\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :func:\u003ccode\u003e~packaging.tags.pure_python_tags\u003c/code\u003e to generate the pure-Python\u003cbr /\u003e\ntags for a Python version without touching the running platform.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1346\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003eSpecifierSet.is_subset() \u0026amp;lt;packaging.specifiers.SpecifierSet.is_subset\u0026amp;gt;\u003c/code\u003e, :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_superset\u003c/code\u003e,\u003cbr /\u003e\nand :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_disjoint\u003c/code\u003e, which compare the\u003cbr /\u003e\nversions two specifier sets accept. (:pull:\u003ccode\u003e1313\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1157\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e\u003cbr /\u003e\ntags on Linux. (:issue:\u003ccode\u003e160\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for versions and specifiers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a\u003cbr /\u003e\nnon-string. (:pull:\u003ccode\u003e1319\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to\u003cbr /\u003e\n\u003ccode\u003eVersion.from_parts\u003c/code\u003e. (:pull:\u003ccode\u003e1241\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1242\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary\u003cbr /\u003e\nintersections. (:pull:\u003ccode\u003e1257\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for requirements and markers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for\u003cbr /\u003e\ntrailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and\u003cbr /\u003e\n\u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in\u003cbr /\u003e\nsets and dicts. (:pull:\u003ccode\u003e1232\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\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/packaging/commit/929fd4b1410ac7ef61ef3f45b2f5d7e87711a9b5\"\u003e\u003ccode\u003e929fd4b\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f300ebf0c155e1f7ea6d62fba11dba4bac3d1944\"\u003e\u003ccode\u003ef300ebf\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pre-commit group with 5 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f91d97566a966177ad7ea5a7c703b12a7273e3b1\"\u003e\u003ccode\u003ef91d975\u003c/code\u003e\u003c/a\u003e ci(downstream): bump hatchling to 1.31.0 and fix its pytest rootdir (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/b1a7124fe3d40c3302c029e9eb01ac3fc3496a54\"\u003e\u003ccode\u003eb1a7124\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 7 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2d873eb6002021a8c007c933fbdab58b37a5079b\"\u003e\u003ccode\u003e2d873eb\u003c/code\u003e\u003c/a\u003e fix(metadata): fold every line boundary when writing headers (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1356\"\u003e#1356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/413d006fadf5b9b14d78ad444201d8189bff8c64\"\u003e\u003ccode\u003e413d006\u003c/code\u003e\u003c/a\u003e docs: changelog for 26.3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1343\"\u003e#1343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4eb0753dba8fcaaac8eb75463374e448f0931558\"\u003e\u003ccode\u003e4eb0753\u003c/code\u003e\u003c/a\u003e docs(metadata): explain selective field validation (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1342\"\u003e#1342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/77e9ed42b6db9c5c011a5148047a356ebe42692a\"\u003e\u003ccode\u003e77e9ed4\u003c/code\u003e\u003c/a\u003e feat(tags): add pure Python tag generator (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/7cea5e88671ed14016e9ab3dd08eab064f596564\"\u003e\u003ccode\u003e7cea5e8\u003c/code\u003e\u003c/a\u003e ci: drop 3.13t on Windows (3.13.14t may fail to build, run takes 9 minutes) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/45a8b3402db5ff82158f2d0eabaf8447aa7a50bf\"\u003e\u003ccode\u003e45a8b34\u003c/code\u003e\u003c/a\u003e docs: add missing versionadded/versionchanged directives (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1344\"\u003e#1344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.23.0 to 3.32.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.32.6\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(lease): reject a duration no marker can carry by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/723\"\u003etox-dev/filelock#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(soft-rw): reject non-finite timing options by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/724\"\u003etox-dev/filelock#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve exception notes when copying and pickling by \u003ca href=\"https://github.com/jackwalkerlabs\"\u003e\u003ccode\u003e@​jackwalkerlabs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/729\"\u003etox-dev/filelock#729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest(soft-rw): reuse existing test module by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/730\"\u003etox-dev/filelock#730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: respect ACL write access when the owner write bit is absent by \u003ca href=\"https://github.com/jackwalkerlabs\"\u003e\u003ccode\u003e@​jackwalkerlabs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/728\"\u003etox-dev/filelock#728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix SoftReadWriteLock state lock timeout by \u003ca href=\"https://github.com/Sohel2309\"\u003e\u003ccode\u003e@​Sohel2309\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/726\"\u003etox-dev/filelock#726\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/jackwalkerlabs\"\u003e\u003ccode\u003e@​jackwalkerlabs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/729\"\u003etox-dev/filelock#729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sohel2309\"\u003e\u003ccode\u003e@​Sohel2309\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/726\"\u003etox-dev/filelock#726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.5...3.32.6\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.5...3.32.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(fork): report where a stalled fork stops by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/715\"\u003etox-dev/filelock#715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: say that mode is read-only in the thread-local section by \u003ca href=\"https://github.com/Gares95\"\u003e\u003ccode\u003e@​Gares95\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/716\"\u003etox-dev/filelock#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(lease): clear token after failed acquire by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\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/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix: retry transient denials on open and claim read by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/705\"\u003etox-dev/filelock#705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: deflake six scheduled-run failures by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/704\"\u003etox-dev/filelock#704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: cover a reclaimed private record for real by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/706\"\u003etox-dev/filelock#706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(fork): fork once the event loop has closed by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/714\"\u003etox-dev/filelock#714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore: batch dependency updates weekly on Tuesday by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/713\"\u003etox-dev/filelock#713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eescape the hostname every marker publishes by \u003ca href=\"https://github.com/dxbjavid\"\u003e\u003ccode\u003e@​dxbjavid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/709\"\u003etox-dev/filelock#709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(strict): deflake close-fault injections on graalpy by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/697\"\u003etox-dev/filelock#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📄 docs: publish llms.txt from the docs build by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/700\"\u003etox-dev/filelock#700\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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003cp\u003e.. towncrier-draft-entries:: Unreleased\u003c/p\u003e\n\u003cp\u003e.. towncrier release notes start\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e4.0.1 (2026-09-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epoll_interval\u003c/code\u003e is now validated at construction, on the setter, and on \u003ccode\u003eacquire()\u003c/code\u003e: a negative, non-finite, or\nnon-numeric value raises :class:\u003ccode\u003eValueError\u003c/code\u003e/:class:\u003ccode\u003eTypeError\u003c/code\u003e immediately instead of failing inside \u003ccode\u003etime.sleep\u003c/code\u003e. :pr:\u003ccode\u003e739\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e4.0.0 (2026-09-17)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eThe :class:\u003ccode\u003e~filelock.SoftReadWriteLock\u003c/code\u003e on-disk protocol is a generation log under \u003ccode\u003e\u0026lt;path\u0026gt;.rw\u003c/code\u003e, and a process\nrunning an earlier release does not see it: an old and a new participant on one lock path do not exclude each\nother. Stop every participant, upgrade them all, then restart them; the new code ignores leftover \u003ccode\u003e.state\u003c/code\u003e,\n\u003ccode\u003e.write\u003c/code\u003e and \u003ccode\u003e.readers/\u003c/code\u003e files, and you can delete them. The filesystem must provide no-replace hard links, as\nit must for :class:\u003ccode\u003e~filelock.StrictSoftFileLock\u003c/code\u003e, so a runtime without \u003ccode\u003eos.link\u003c/code\u003e raises\n:class:\u003ccode\u003e~filelock.SoftFileLockProtocolError\u003c/code\u003e on acquire. Constructing a singleton again with a different\n\u003ccode\u003eon_compromise\u003c/code\u003e, or with \u003ccode\u003epoll_interval\u003c/code\u003e at or above \u003ccode\u003estale_threshold\u003c/code\u003e, now raises :class:\u003ccode\u003eValueError\u003c/code\u003e. :pr:\u003ccode\u003e735\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003e~filelock.SoftReadWriteLock\u003c/code\u003e exposes :attr:\u003ccode\u003e~filelock.SoftReadWriteLock.generation\u003c/code\u003e as a fencing token for\nthe protected resource and reports a lost hold through \u003ccode\u003eon_compromise\u003c/code\u003e and\n:attr:\u003ccode\u003e~filelock.SoftReadWriteLock.compromise\u003c/code\u003e. :pr:\u003ccode\u003e735\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003e~filelock.SoftReadWriteLock\u003c/code\u003e no longer deadlocks when a holder dies on another host mid-transition, and\n\u003ccode\u003erelease()\u003c/code\u003e no longer waits on a mutex a dead host left behind (:pr:\u003ccode\u003e725\u003c/code\u003e, :pr:\u003ccode\u003e735\u003c/code\u003e). The state mutex is gone.\nEach transition is one atomic snapshot commit, and liveness is a heartbeat nonce read on the observer's own clock\nrather than an \u003ccode\u003emtime\u003c/code\u003e read against another host's. :pr:\u003ccode\u003e735\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.7 (2026-09-16)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eValidate final-symlink refusal by error number so the test works across libc implementations. :pr:\u003ccode\u003e737\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocument that :meth:\u003ccode\u003e~filelock.BaseFileLock.acquire\u003c/code\u003e reads \u003ccode\u003eblocking=None\u003c/code\u003e as the lock's \u003ccode\u003eblocking\u003c/code\u003e attribute and\nraises :class:\u003ccode\u003e~filelock.Timeout\u003c/code\u003e after one attempt when \u003ccode\u003eblocking=False\u003c/code\u003e. :pr:\u003ccode\u003e733\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.6 (2026-09-08)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSoftFileLease\u003c/code\u003e and \u003ccode\u003eAsyncSoftFileLease\u003c/code\u003e now reject a boolean or non-finite \u003ccode\u003elease_duration\u003c/code\u003e, which used to\npublish an owner record their own \u003ccode\u003eowner\u003c/code\u003e property reads back as malformed. :pr:\u003ccode\u003e723\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject non-finite heartbeat, stale, and polling intervals in \u003ccode\u003eSoftReadWriteLock\u003c/code\u003e and \u003ccode\u003eAsyncSoftReadWriteLock\u003c/code\u003e,\nincluding cached singleton construction and overflow in the default stale threshold. :pr:\u003ccode\u003e724\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/tox-dev/filelock/commit/4efd93e0482e8095a0b6949fb337206e7f67495d\"\u003e\u003ccode\u003e4efd93e\u003c/code\u003e\u003c/a\u003e Release 3.32.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/7b7b7a8b9b10acf826cca246441297468039b0c1\"\u003e\u003ccode\u003e7b7b7a8\u003c/code\u003e\u003c/a\u003e Fix SoftReadWriteLock state lock timeout (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f2f7b8696426c518b6828ea10e755c0ba2a4ffe2\"\u003e\u003ccode\u003ef2f7b86\u003c/code\u003e\u003c/a\u003e fix: respect ACL write access when the owner write bit is absent (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/e947a694fb0da6676c4861c8bfef3650e5656153\"\u003e\u003ccode\u003ee947a69\u003c/code\u003e\u003c/a\u003e test(soft-rw): reuse existing test module (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/730\"\u003e#730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/da3ae2bca0035fb9e5269257e6f393360866cf88\"\u003e\u003ccode\u003eda3ae2b\u003c/code\u003e\u003c/a\u003e fix: preserve exception notes when copying and pickling (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/ae9cb5b2d66d6a79edd76b292fa7320c11468812\"\u003e\u003ccode\u003eae9cb5b\u003c/code\u003e\u003c/a\u003e 🐛 fix(soft-rw): reject non-finite timing options (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/d00f9bbd709fbe92a99a38cb1e32b6690813e5a8\"\u003e\u003ccode\u003ed00f9bb\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/82f66d7b0aaa83755f8d71d0b0da88408b58ec4a\"\u003e\u003ccode\u003e82f66d7\u003c/code\u003e\u003c/a\u003e 🐛 fix(lease): reject a duration no marker can carry (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1d9e9e7e43a1089c57d7c6f20d6a2268235a4745\"\u003e\u003ccode\u003e1d9e9e7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/1585dfef9355a5c77d4a9498cc34d3a98056fdb9\"\u003e\u003ccode\u003e1585dfe\u003c/code\u003e\u003c/a\u003e Release 3.32.5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.23.0...3.32.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plum-dispatch` from 2.5.7 to 2.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/beartype/plum/releases\"\u003eplum-dispatch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimise \u003ccode\u003e_wrap_type_hint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/310\"\u003e#310\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eBuild macOS arm64 mypyc wheels (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/320\"\u003e#320\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/beartype/plum/issues/317\"\u003e#317\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/318\"\u003e#318\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/319\"\u003e#319\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCompile more things with \u003ccode\u003emypyc\u003c/code\u003e for faster dispatch (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/287\"\u003e#287\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/beartype/plum/issues/288\"\u003e#288\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/289\"\u003e#289\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake concurrent dispatch resolution thread safe (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/281\"\u003e#281\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix support for \u003ccode\u003ebeartype\u0026gt;=0.23\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/296\"\u003e#296\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImprove typing (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/268\"\u003e#268\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eVal\u003c/code\u003e, which was deprecated in v0.5.0 in favour of \u003ccode\u003etyping.Literal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/269\"\u003e#269\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport union aliases in Python 3.14 and later (\u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.8.0\u003c/h2\u003e\n\u003cp\u003eStarting this release, Plum will be available on PyPI as both \u003ccode\u003eplum-dispatch\u003c/code\u003e and \u003ccode\u003eplum\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003ev2.7.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003efaithful\u003c/code\u003e keyword to \u003ccode\u003eModuleType\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e All imports should now go through \u003ccode\u003eplum\u003c/code\u003e directly! That is, not \u003ccode\u003eplum.signature.Signature\u003c/code\u003e, but \u003ccode\u003eplum.Signature\u003c/code\u003e. Please do open an issue if this release breaks something that shouldn't break.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSignificantly improve typing of the internals (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/179\"\u003e#179\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/242\"\u003e#242\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSwitch to \u003ccode\u003euv\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/218\"\u003e#218\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMake modules private for public/private separation (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/241\"\u003e#241\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSwitch to \u003ccode\u003esrc\u003c/code\u003e layout (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/249\"\u003e#249\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImprove config (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/248\"\u003e#248\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003emypyc\u003c/code\u003e builds for better performance (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/247\"\u003e#247\u003c/a\u003e by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e)!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.1\u003c/h2\u003e\n\u003cp\u003eThis release features numerous very helpful contributions and improvements by \u003ca href=\"https://github.com/nstarman\"\u003e\u003ccode\u003e@​nstarman\u003c/code\u003e\u003c/a\u003e!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse dependency groups (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/195\"\u003e#195\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003etyping_extensions\u003c/code\u003e as standard library and make more use of it (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/226\"\u003e#226\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/232\"\u003e#232\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eComplete deprecation cycles (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/230\"\u003e#230\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/236\"\u003e#236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eTurn various arguments into positional-only (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/229\"\u003e#229\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRemove unnecessary path manipulation (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/233\"\u003e#233\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRework tests with a \u003ccode\u003edispatch\u003c/code\u003e fixture (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/234\"\u003e#234\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAvoid using a deprecated NumPy module (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/231\"\u003e#231\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDrops support for Python 3.9 (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/228\"\u003e#228\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImport exports from \u003ccode\u003emethods.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/237\"\u003e#237\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixes an incorrect \u003ccode\u003eoverload\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/238\"\u003e#238\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003enox\u003c/code\u003e for testing (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/235\"\u003e#235\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/beartype/plum/issues/240\"\u003e#240\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/beartype/plum/issues/228\"\u003e#228\u003c/a\u003e also fixes an important bug to do with the handling of unions (CC \u003ca href=\"https://github.com/davidwyld\"\u003e\u003ccode\u003e@​davidwyld\u003c/code\u003e\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003ev2.6.0\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/beartype/plum/commit/c835c8cf5ebea4f00ee304a647e026739034e63b\"\u003e\u003ccode\u003ec835c8c\u003c/code\u003e\u003c/a\u003e fix(mypyc): keep \u003ccode\u003eFunction\u003c/code\u003e weak-referenceable on the compiled wheels (\u003ca href=\"https://redirect.github.com/beartype/plum/issues/319\"\u003e#319\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/dimensionalOS/dimos/pull/4260","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimensionalOS%2Fdimos/issues/4260","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4260/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":"/services/ai-orchestrator-service","pr_created_at":"2026-09-19T19:44:57.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5513101412","node_id":"PR_kwDOT_waCs8AAAABEP-mQw","number":89,"state":"open","title":"build(deps): bump the pip-minor-patch group in /services/ai-orchestrator-service with 70 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-19T19:44:57.000Z","updated_at":"2026-09-19T19:44:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-minor-patch","update_count":70,"packages":[{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"build","old_version":"1.5.0","new_version":"1.6.1","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cloudpathlib","old_version":"0.24.0","new_version":"0.25.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"contourpy","old_version":"1.3.3","new_version":"1.4.0","repository_url":"https://github.com/contourpy/contourpy"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastapi","old_version":"0.139.2","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"filelock","old_version":"3.30.2","new_version":"3.32.7","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.65.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2026.6.0","new_version":"2026.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"google-auth","old_version":"2.55.2","new_version":"2.58.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-genai","old_version":"2.12.0","new_version":"2.23.0","repository_url":"https://github.com/googleapis/python-genai"},{"name":"googleapis-common-protos","old_version":"1.75.0","new_version":"1.75.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.82.1","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"hf-xet","old_version":"1.5.2","new_version":"1.6.0","repository_url":"https://github.com/huggingface/xet-core"},{"name":"huggingface-hub","old_version":"1.23.0","new_version":"1.31.0","repository_url":"https://github.com/huggingface/huggingface_hub"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jiter","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain","old_version":"1.3.14","new_version":"1.4.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-google-genai","old_version":"4.2.7","new_version":"4.4.0","repository_url":"https://github.com/langchain-ai/langchain-google"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.5","new_version":"0.12.6","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"mmh3","old_version":"5.2.1","new_version":"5.3.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.7.1","new_version":"6.8.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.24.0","new_version":"2.26.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.5.1","new_version":"2.5.3","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.27.0","new_version":"1.30.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pandas","old_version":"3.0.3","new_version":"3.0.5","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"propcache","old_version":"0.5.2","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pybase64","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.49.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyproject-hooks","old_version":"1.2.0","new_version":"1.3.3","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.9.10","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"scikit-learn","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.18.0","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"smart-open","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/piskvorky/smart_open"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tokenizers","old_version":"0.22.2","new_version":"0.23.2","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.13.0","new_version":"2.14.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"transformers","old_version":"5.14.1","new_version":"5.17.0","repository_url":"https://github.com/huggingface/transformers"},{"name":"typer","old_version":"0.26.8","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.3","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.53.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"wrapt","old_version":"2.2.2","new_version":"2.4.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.24.2","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"}],"path":"/services/ai-orchestrator-service","ecosystem":"pip"},"body":"Bumps the pip-minor-patch group in /services/ai-orchestrator-service with 70 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [build](https://github.com/pypa/build) | `1.5.0` | `1.6.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.24.0` | `0.25.0` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.3` | `1.4.0` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.2` | `0.141.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.30.2` | `3.32.7` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.65.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.6.0` | `2026.7.0` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.55.2` | `2.58.0` |\n| [google-genai](https://github.com/googleapis/python-genai) | `2.12.0` | `2.23.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.75.0` | `1.75.3` |\n| [grpcio](https://github.com/grpc/grpc) | `1.82.1` | `1.84.0` |\n| [hf-xet](https://github.com/huggingface/xet-core) | `1.5.2` | `1.6.0` |\n| [huggingface-hub](https://github.com/huggingface/huggingface_hub) | `1.23.0` | `1.31.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jiter](https://github.com/pydantic/jiter) | `0.16.0` | `0.17.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.14` | `1.4.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.3` |\n| [langchain-google-genai](https://github.com/langchain-ai/langchain-google) | `4.2.7` | `4.4.0` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.5` | `0.12.6` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.1` | `5.3.0` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.1` | `6.8.0` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.24.0` | `2.26.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.5.1` | `2.5.3` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.27.0` | `1.30.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.3` | `3.0.5` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.5.2` | `0.5.4` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.3` | `1.5.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.49.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.2.0` | `1.3.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.9.10` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.9.0` | `1.9.1` |\n| [scipy](https://github.com/scipy/scipy) | `1.18.0` | `1.18.1` |\n| [smart-open](https://github.com/piskvorky/smart_open) | `8.0.0` | `8.0.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.22.2` | `0.23.2` |\n| [torch](https://github.com/pytorch/pytorch) | `2.13.0` | `2.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.1` |\n| [transformers](https://github.com/huggingface/transformers) | `5.14.1` | `5.17.0` |\n| [typer](https://github.com/fastapi/typer) | `0.26.8` | `0.27.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.3` | `2026.4` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.53.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.2.2` | `2.4.1` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.25.1` |\n\nUpdates `aiohttp` from 3.14.1 to 3.14.3\nUpdates `annotated-doc` from 0.0.4 to 0.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/releases\"\u003eannotated-doc's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \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⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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 github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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/annotated-doc/pull/89\"\u003e#89\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👷 Add GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\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 alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\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🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\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 branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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 actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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 ty from 0.0.27 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/52\"\u003e#52\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/blob/main/release-notes.md\"\u003eannotated-doc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5 (2026-07-28)\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \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⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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 github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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/annotated-doc/pull/89\"\u003e#89\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👷 Add GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\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 alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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👷 Add pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\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🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\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 branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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 actions/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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/annotated-doc/commit/ef48d6ad51d226f772fd9c5284f55199afe4007c\"\u003e\u003ccode\u003eef48d6a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.5 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/93\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/c628000835a26f6bc8c776f90bcbcf95211f233b\"\u003e\u003ccode\u003ec628000\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/e0b4579d2ad8d62a304c9f30a1c2c084f0d372e5\"\u003e\u003ccode\u003ee0b4579\u003c/code\u003e\u003c/a\u003e ➖ Drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/36\"\u003e#36\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/ef956b4e9f2c0e2bead1cba7a6888e1ed8c2c237\"\u003e\u003ccode\u003eef956b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/84bf1e5402c5e0cfd1462c5d3c8bae22fb717bd8\"\u003e\u003ccode\u003e84bf1e5\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade latest-changes to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cf773e138b1dc5608ce0f0d11e1939c410ef6228\"\u003e\u003ccode\u003ecf773e1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/1375d6eb8147cb2352d080ef09f356dfc18e0d29\"\u003e\u003ccode\u003e1375d6e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cd373656cbf40e5fd4cc28680ca5e05bf12709cb\"\u003e\u003ccode\u003ecd37365\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/f9f3b695cbacc4ffc37d9cebff6e05bd1751f68a\"\u003e\u003ccode\u003ef9f3b69\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/842084457f0a7739fb91d2a4ea602b2bc4e15767\"\u003e\u003ccode\u003e8420844\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/annotated-doc/compare/0.0.4...0.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.5.0 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore[v1]: prepare for v1.6.1 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1181\"\u003epypa/build#1181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.6.0...1.6.1\"\u003ehttps://github.com/pypa/build/compare/1.6.0...1.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace prettier with mdformat and yamlfmt by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1133\"\u003epypa/build#1133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLet yamlfmt format the workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1134\"\u003epypa/build#1134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(release): semver auto bump, changelog reflow, and roll back 1.5.1 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1132\"\u003epypa/build#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hash verification in --dependency-constraints-txt could be silently skipped by \u003ca href=\"https://github.com/manfred-kaiser\"\u003e\u003ccode\u003e@​manfred-kaiser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1140\"\u003epypa/build#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): bump build-and-inspect-python-package to v3.0.1 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1147\"\u003epypa/build#1147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): pin coverage core to ctrace so test contexts record by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1148\"\u003epypa/build#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: run mypy on more parts of the code by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1151\"\u003epypa/build#1151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: turn up strictness on mypy by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1153\"\u003epypa/build#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: faster mypy, fix merge error by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1156\"\u003epypa/build#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): rerun integration tests on transient network errors by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1150\"\u003epypa/build#1150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: clean up unused casts in tests by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1154\"\u003epypa/build#1154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(typing): apply review feedback from \u003ca href=\"https://redirect.github.com/pypa/build/issues/1093\"\u003e#1093\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1155\"\u003epypa/build#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Generator is more accurate than Iterator by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1152\"\u003epypa/build#1152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: mark test_main_sdist_input_end_to_end with pytest.mark.network by \u003ca href=\"https://github.com/frenzymadness\"\u003e\u003ccode\u003e@​frenzymadness\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1144\"\u003epypa/build#1144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;⚠️ feat(util): deprecate project_wheel_metadata\u0026quot; by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1158\"\u003epypa/build#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: download integration sources once per run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1157\"\u003epypa/build#1157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse stdlib \u003ccode\u003eimportlib.metadata\u003c/code\u003e for typing by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1162\"\u003epypa/build#1162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop redundant \u003ccode\u003eexc_info\u003c/code\u003e parameter from backend exception wrapper by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1161\"\u003epypa/build#1161\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop a few PyPy-specific test skips by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1164\"\u003epypa/build#1164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore: batch dependency updates weekly on Tuesday by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1165\"\u003epypa/build#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👷 ci: use app token for releases by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1169\"\u003epypa/build#1169\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/manfred-kaiser\"\u003e\u003ccode\u003e@​manfred-kaiser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1140\"\u003epypa/build#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/frenzymadness\"\u003e\u003ccode\u003e@​frenzymadness\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1144\"\u003epypa/build#1144\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pypa/build/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): accept sdist tarball as srcdir argument by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1057\"\u003epypa/build#1057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: drop 3.9 branches for version_info checks by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1059\"\u003epypa/build#1059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: skip test_uv_install_strips_pythonpath with missing uv by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1063\"\u003epypa/build#1063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove myself from codeowners by \u003ca href=\"https://github.com/FFY00\"\u003e\u003ccode\u003e@​FFY00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1066\"\u003epypa/build#1066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: safe_extractall to use pathlib.Path by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1060\"\u003epypa/build#1060\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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.6.1 (2026-09-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid trying to detect symlinks on Windows, regression in 1.6.0 - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1175\u003c/code\u003e) (:issue:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eDocumentation\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix doubled backslashes in the Windows pip config path (\u003ccode\u003e%APPDATA%\\pip\\pip.ini\u003c/code\u003e) in the docs - by :user:\u003ccode\u003earoh3006\u003c/code\u003e\n(:issue:\u003ccode\u003e1149\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1168\u003c/code\u003e, :issue:\u003ccode\u003e1170\u003c/code\u003e, :issue:\u003ccode\u003e1178\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.6.0 (2026-08-27)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--report=PATH\u003c/code\u003e to write a machine-readable JSON report of built artifacts; \u003ccode\u003e--metadata\u003c/code\u003e now also accepts\n\u003ccode\u003e.whl\u003c/code\u003e files - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e198\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003esrcdir\u003c/code\u003e argument now accepts \u003ccode\u003e.tar.gz\u003c/code\u003e source distributions, extracting and building from them - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e311\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eThe \u0026quot;Unmet dependencies\u0026quot; error from \u003ccode\u003e--no-isolation\u003c/code\u003e builds now shows the wanted version, found version, and\ninterpreter - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e504\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--sdist-extract-dir\u003c/code\u003e to extract the intermediate sdist into a persistent directory, enabling compiler cache\nreuse across rebuilds - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e614\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--env-dir\u003c/code\u003e to place the isolated build environment at a fixed path, enabling compiler cache reuse across builds\n\u003cul\u003e\n\u003cli\u003eby :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e655\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePrint a summary of resolved dependency versions (\u003ccode\u003ename==version\u003c/code\u003e) after installing them in isolated builds - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e959\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOn build failure, print a tip pointing to \u003ccode\u003e--env-dir\u003c/code\u003e and \u003ccode\u003e--sdist-extract-dir\u003c/code\u003e for debugging and link to the\n\u0026quot;Debug a failed build\u0026quot; how-to - reported by :user:\u003ccode\u003edimpase\u003c/code\u003e, implemented by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e966\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/89cccef40df9011f03bec18cf52c53d1096ed6ee\"\u003e\u003ccode\u003e89cccef\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a6f707a75fc8548d7707645e97c7903197387849\"\u003e\u003ccode\u003ea6f707a\u003c/code\u003e\u003c/a\u003e ci: support releases from v* branches (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1178\"\u003e#1178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/77851610de5d3894fa8a88e06e0232901cf93758\"\u003e\u003ccode\u003e7785161\u003c/code\u003e\u003c/a\u003e docs: fix doubled backslashes in Windows pip config path (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1149\"\u003e#1149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/244b250c3219070eebb29764f7709262d48afd41\"\u003e\u003ccode\u003e244b250\u003c/code\u003e\u003c/a\u003e fix: always use copies for the isolated venv on Windows (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c93ca6f6d252e4d8df7fda4a61f8f9ed8a55a411\"\u003e\u003ccode\u003ec93ca6f\u003c/code\u003e\u003c/a\u003e build(deps): bump re-actors/alls-green from 1.2.2 to 1.3.0 in the github-acti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e02ffd32241aec2e306d90869417c1e900c0adb4\"\u003e\u003ccode\u003ee02ffd3\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1173\"\u003e#1173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/aad39a800e3d81bf907018ebe2fab135717da59b\"\u003e\u003ccode\u003eaad39a8\u003c/code\u003e\u003c/a\u003e docs: fix changelog page heading levels and sidebar (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/5c3fd46b5c38c7caea5dd95ce365971104a734aa\"\u003e\u003ccode\u003e5c3fd46\u003c/code\u003e\u003c/a\u003e docs: use PyPI ref directly (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1172\"\u003e#1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/1c5bd6c21cbd33c1816978d45219d48fb4c2b269\"\u003e\u003ccode\u003e1c5bd6c\u003c/code\u003e\u003c/a\u003e 🐛 fix(release): format generated changelog (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/7f0cc7ed19969558c7daeaa3652ce2ffc81599c1\"\u003e\u003ccode\u003e7f0cc7e\u003c/code\u003e\u003c/a\u003e 🔧 build(type): replace mypy with pyrefly (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.5.0...1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.6.17 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.06.17...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.1.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.9 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/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/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/char...\n\n_Description has been truncated_","html_url":"https://github.com/RanugaVW/Clario-multiAgent-triage-micro-services/pull/89","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/RanugaVW%2FClario-multiAgent-triage-micro-services/issues/89","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/89/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-16T02:22:32.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5469471709","node_id":"PR_kwDOTZpjNs8AAAABDs21bA","number":26,"state":"closed","title":"chore(deps): bump the pip-minor-patch group across 1 directory with 76 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-23T02:15:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-16T02:22:32.000Z","updated_at":"2026-09-23T02:15:41.000Z","time_to_close":604387,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip-minor-patch","update_count":76,"packages":[{"name":"langchain","old_version":"1.3.13","new_version":"1.4.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.3","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.3.5","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pypdfium2","old_version":"5.11.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"duckdb","old_version":"1.5.4","new_version":"1.5.5","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"scikit-learn","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"yfinance","old_version":"1.5.1","new_version":"1.7.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"akshare","old_version":"1.18.64","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"ccxt","old_version":"4.5.64","new_version":"4.5.78","repository_url":"https://github.com/ccxt/ccxt"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"sse-starlette","old_version":"3.4.5","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"ddgs","old_version":"9.14.4","new_version":"9.16.0","repository_url":"https://github.com/deedy5/ddgs"},{"name":"matplotlib","old_version":"3.11.0","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"pyjwt","old_version":"2.13.0","new_version":"2.14.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cachetools","old_version":"7.1.4","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"caio","old_version":"0.10.2","new_version":"0.12.4","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"curl-cffi","old_version":"0.15.0","new_version":"0.16.3","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"cyclopts","old_version":"4.21.0","new_version":"4.25.2","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.65.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"griffelib","old_version":"2.1.0","new_version":"2.3.0"},{"name":"h2","old_version":"4.3.0","new_version":"4.4.1","repository_url":"https://github.com/python-hyper/h2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jiter","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joserfc","old_version":"1.7.3","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.2","new_version":"0.12.4","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"llvmlite","old_version":"0.48.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"multidict","old_version":"6.7.1","new_version":"6.8.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.23.0","new_version":"2.26.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numba","old_version":"0.66.0","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"opentelemetry-api","old_version":"1.43.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"peewee","old_version":"4.2.1","new_version":"4.5.1","repository_url":"https://github.com/coleifer/peewee"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.8","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic-core","old_version":"2.47.0","new_version":"2.49.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyphen","old_version":"0.17.2","new_version":"0.18.1","repository_url":"https://github.com/Kozea/Pyphen"},{"name":"pytz","old_version":"2026.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.9.10","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"simplejson","old_version":"4.1.1","new_version":"4.1.2","repository_url":"https://github.com/simplejson/simplejson"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tiktoken","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.3","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"yarl","old_version":"1.24.2","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 76 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.13` | `1.4.0` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.3` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.3.5` | `1.6.2` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.11.0` | `5.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.4` | `1.5.5` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.9.0` | `1.9.1` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.1` | `1.7.0` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.64` | `1.18.94` |\n| [ccxt](https://github.com/ccxt/ccxt) | `4.5.64` | `4.5.78` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.5` | `3.4.11` |\n| [ddgs](https://github.com/deedy5/ddgs) | `9.14.4` | `9.16.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.0` | `3.11.2` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.13.0` | `2.14.0` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.4` | `7.1.8` |\n| [caio](https://github.com/mosquito/caio) | `0.10.2` | `0.12.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.15.0` | `0.16.3` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.21.0` | `4.25.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.65.0` |\n| griffelib | `2.1.0` | `2.3.0` |\n| [h2](https://github.com/python-hyper/h2) | `4.3.0` | `4.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [jiter](https://github.com/pydantic/jiter) | `0.16.0` | `0.17.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.3` | `1.7.5` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.2` | `0.12.4` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.48.0` | `0.49.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.1` | `6.8.0` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.23.0` | `2.26.0` |\n| [numba](https://github.com/numba/numba) | `0.66.0` | `0.67.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.43.0` | `1.44.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [peewee](https://github.com/coleifer/peewee) | `4.2.1` | `4.5.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.8` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.47.0` | `2.49.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyphen](https://github.com/Kozea/Pyphen) | `0.17.2` | `0.18.1` |\n| [pytz](https://github.com/stub42/pytz) | `2026.2` | `2026.3.post1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.9.10` |\n| [simplejson](https://github.com/simplejson/simplejson) | `4.1.1` | `4.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.13.0` | `0.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.1` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.3` | `2026.4` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.24.5` |\n\n\nUpdates `langchain` from 1.3.13 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-perplexity==1.4.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-perplexity==1.3.2\u003c/p\u003e\n\u003cp\u003erelease(perplexity): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37993\"\u003e#37993\u003c/a\u003e)\nfeat(perplexity): \u003ccode\u003ebind_tools\u003c/code\u003e and Responses-API tool round-trip (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37934\"\u003e#37934\u003c/a\u003e)\nhotfix(openai): min core dep (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/37990\"\u003e#37990\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.4.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.3.5\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38983\"\u003e#38983\u003c/a\u003e)\nchore: bump pillow from 12.2.0 to 12.3.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38999\"\u003e#38999\u003c/a\u003e)\nfeat(core): add \u003ccode\u003ereasoning_effort\u003c/code\u003e as a standard chat model parameter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38887\"\u003e#38887\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38797\"\u003e#38797\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.4.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.18\u003c/p\u003e\n\u003cp\u003edocs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\nfeat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\nperf(anthropic,langchain): omit middleware trace inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40098\"\u003e#40098\u003c/a\u003e)\nfix(langchain): include model destination in agent tool routing (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38355\"\u003e#38355\u003c/a\u003e)\nchore(langchain): bump vcrpy test dependency minimum to \u003ccode\u003e\u0026gt;=8.2.0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39942\"\u003e#39942\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.4.0a4\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.4.0a4\ntest(langchain): cover mixed-era ClientGroup and group elicitation\nUpdate libs/langchain_v1/langchain/mcp/adapter.py\nfix(langchain): drive MCP elicitation via member session for fastmcp 4.0.1\nfix(sdk): use latest fastmcp and rm reentrant impl\ncr\ncr\nrefactor(langchain): inline MCP client arming into \u003ccode\u003e__init__\u003c/code\u003e\nrefactor(langchain): stamp an arm marker instead of introspecting the handler closure\nfix(langchain): gate MCP interrupt routing on the negotiated protocol era\nrefactor(langchain): drop MCP \u003ccode\u003eelicitation\u003c/code\u003e flag, derive interrupt routing from the client\nfix(sdk): add _ReentrantClientGroup\nfix(langchain): narrow \u003ccode\u003eMCPAdapter.client\u003c/code\u003e union in mcp tests for mypy\nchore(langchain): format \u003ccode\u003emcp/adapter.py\u003c/code\u003e\nrelease(langchain): 1.4.0a3\nfeat(langchain): group MCP tool metadata under an \u003ccode\u003emcp\u003c/code\u003e namespace\nrefactor(langchain): stop exporting \u003ccode\u003eMCPAdapterTarget\u003c/code\u003e from \u003ccode\u003elangchain.mcp\u003c/code\u003e\nrefactor(langchain): rename \u003ccode\u003econvert_mcp_tool_to_langchain_tool\u003c/code\u003e to \u003ccode\u003eas_langchain_tool\u003c/code\u003e\nrefactor(langchain): rename \u003ccode\u003eMCPAdapter.get_tools\u003c/code\u003e to \u003ccode\u003elist_tools\u003c/code\u003e\nfeat(langchain): expose \u003ccode\u003ecache_mode\u003c/code\u003e on \u003ccode\u003eMCPAdapter.get_tools\u003c/code\u003e\nchore(langchain): require \u003ccode\u003efastmcp\u003c/code\u003e 4.0.0\nfeat(langchain): accept a \u003ccode\u003eClientGroup\u003c/code\u003e as an \u003ccode\u003eMCPAdapter\u003c/code\u003e target\nfeat(langchain): mark the \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace as beta\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/langchain-ai/langchain/commit/79cab2dc7f58be720cac43db3677b4c1fd971f91\"\u003e\u003ccode\u003e79cab2d\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1e6a4f0b45b60475f566f3ad49fb32ea99d22233\"\u003e\u003ccode\u003e1e6a4f0\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8330dfe987988c1bcbbc5e8d9af9a67e5a1c2744\"\u003e\u003ccode\u003e8330dfe\u003c/code\u003e\u003c/a\u003e docs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/280442b54c80db2175ced4a20ab59eab86a32dc1\"\u003e\u003ccode\u003e280442b\u003c/code\u003e\u003c/a\u003e feat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f5ee2b65f4cf2f1a9fe688bcae6ad2af966582bd\"\u003e\u003ccode\u003ef5ee2b6\u003c/code\u003e\u003c/a\u003e chore(chroma): bump Pygments security constraint (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40162\"\u003e#40162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/234255c1c7427b5ed6dc505abad41ddfa6c9ff8f\"\u003e\u003ccode\u003e234255c\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40009\"\u003e#40009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/79e0e4adbafc1fda1ca9956e184be8b8819aa7ab\"\u003e\u003ccode\u003e79e0e4a\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/langchain (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40149\"\u003e#40149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e90201b7af5cd32762744c974ca9ce3f27efc9d8\"\u003e\u003ccode\u003ee90201b\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4240248e7b08ed72e85ce0744350c33beddb0ac8\"\u003e\u003ccode\u003e4240248\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/text-splitters (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40148\"\u003e#40148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/530290a9d445069d80a68cdcd4d0da768f2aa2b0\"\u003e\u003ccode\u003e530290a\u003c/code\u003e\u003c/a\u003e chore(deps): bump uv to 0.12.8 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40092\"\u003e#40092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain==1.3.13...langchain==1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.4.9 to 1.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.3\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.2\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40407\"\u003e#40407\u003c/a\u003e)\nfeat(core): Allow model name and provider tracing metadata override based on gateway response (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40406\"\u003e#40406\u003c/a\u003e)\ntest(core): cover the deprecated \u003ccode\u003e.text()\u003c/code\u003e access path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40243\"\u003e#40243\u003c/a\u003e)\ndocs(core): remove stale Args/Raises entries from FileCallbackHandler._write and ChatGeneration.set_text (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40211\"\u003e#40211\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40209\"\u003e#40209\u003c/a\u003e)\nfeat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\nchore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\nchore(deps): bump tornado from 6.5.7 to 6.5.8 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40113\"\u003e#40113\u003c/a\u003e)\nfix(core): avoid mutation in google-genai standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40023\"\u003e#40023\u003c/a\u003e)\nfix(core): avoid mutation in bedrock converse standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40022\"\u003e#40022\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.0\u003c/p\u003e\n\u003cp\u003erevert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\nrelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\nfix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\nrelease(core): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39832\"\u003e#39832\u003c/a\u003e)\nfeat(core): propagate gateway information on error path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39829\"\u003e#39829\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\nfix(core): resolve postponed annotations in \u003ccode\u003eStructuredTool._injected_args_keys\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39602\"\u003e#39602\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\nfix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict mappings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39750\"\u003e#39750\u003c/a\u003e)\nfix(core): make subprocess and temporary file tests portable on Windows (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39664\"\u003e#39664\u003c/a\u003e)\nfix(core): fail fast when tool schemas can't resolve forward refs during serialization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39570\"\u003e#39570\u003c/a\u003e)\ntest(core): avoid version-dependent runnable snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39705\"\u003e#39705\u003c/a\u003e)\nfix(core): require all nested properties for strict tool schemas (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39306\"\u003e#39306\u003c/a\u003e)\nfix(core): remove stale sync-stream \u003ccode\u003exfail\u003c/code\u003e [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39720\"\u003e#39720\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39723\"\u003e#39723\u003c/a\u003e)\nperf(core): Lazily import transformers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38037\"\u003e#38037\u003c/a\u003e)\nfix(core): accept non-dict Mapping values in mustache templates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39680\"\u003e#39680\u003c/a\u003e)\ndocs(core): clarify \u003ccode\u003eRunnable\u003c/code\u003e pipe coercion [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39075\"\u003e#39075\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39707\"\u003e#39707\u003c/a\u003e)\nfix(core): finalize chain-group runs on \u003ccode\u003eBaseException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39699\"\u003e#39699\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.5\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/langchain-ai/langchain/commit/348c9dc572599947d2d7d33d6a5b8b936e92a1d4\"\u003e\u003ccode\u003e348c9dc\u003c/code\u003e\u003c/a\u003e release(core): 1.6.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40407\"\u003e#40407\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e0e1557bd6ebae13915c59d942ef2824b51a10c6\"\u003e\u003ccode\u003ee0e1557\u003c/code\u003e\u003c/a\u003e feat(core): Allow model name and provider tracing metadata override based on ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/67ee6cb63dd9ae7f3a4dfedc3095652bce15a125\"\u003e\u003ccode\u003e67ee6cb\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40399\"\u003e#40399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/d5d7cc56ab3932c9a10dc76b31cd5d4a778c3f2a\"\u003e\u003ccode\u003ed5d7cc5\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40387\"\u003e#40387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4436bd2b67814877a3797613de28882adcdb6edf\"\u003e\u003ccode\u003e4436bd2\u003c/code\u003e\u003c/a\u003e fix(anthropic): preserve invalid tool use blocks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40372\"\u003e#40372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/443154df9db5251d73730e1de3eb63bf352e586f\"\u003e\u003ccode\u003e443154d\u003c/code\u003e\u003c/a\u003e feat(huggingface): use torch.accelerator for device-agnostic device count det...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3539ca08d92e10b65b6f3117cfd657b16b05c865\"\u003e\u003ccode\u003e3539ca0\u003c/code\u003e\u003c/a\u003e fix(huggingface): remove retired IPEX backend (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39649\"\u003e#39649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/45d94fb0fa10bf8cab95dcb1e76c2bc39165535d\"\u003e\u003ccode\u003e45d94fb\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40358\"\u003e#40358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/60357692c76651a7cd6153496a24658fa355bdcc\"\u003e\u003ccode\u003e6035769\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40339\"\u003e#40339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a7b0f0ae50acebb527a25e153ff16621d37ba650\"\u003e\u003ccode\u003ea7b0f0a\u003c/code\u003e\u003c/a\u003e docs: update OpenWiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40318\"\u003e#40318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.9...langchain-core==1.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-openai` from 1.3.5 to 1.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-openai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-openai==1.6.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40339\"\u003e#40339\u003c/a\u003e)\nfix(openai): add GPT-6 Astra reasoning efforts (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40330\"\u003e#40330\u003c/a\u003e)\nchore(deps): bump httpx2 from 2.10.0 to 2.12.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40309\"\u003e#40309\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.6.0\u003c/p\u003e\n\u003cp\u003efix(openai): bump \u003ccode\u003emax_completion_tokens\u003c/code\u003e in cache breakpoint integration test (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40284\"\u003e#40284\u003c/a\u003e)\nrelease(openai): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40268\"\u003e#40268\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40217\"\u003e#40217\u003c/a\u003e)\nfix(openai): support Azure AD auth with OpenAI 3.8 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40190\"\u003e#40190\u003c/a\u003e)\nfeat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\nfeat(openai): support \u003ccode\u003econfiguration_update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40201\"\u003e#40201\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\nfix(openai): route \u003ccode\u003egpt-5.6-sol\u003c/code\u003e to responses API (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40133\"\u003e#40133\u003c/a\u003e)\nchore(openai): fix tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39972\"\u003e#39972\u003c/a\u003e)\nfix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39936\"\u003e#39936\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39954\"\u003e#39954\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.2\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(openai): raise clear error on unexpected response type in \u003ccode\u003e_create_chat_result\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39731\"\u003e#39731\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39719\"\u003e#39719\u003c/a\u003e)\nfix(openai): preserve reasoning item boundaries (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39278\"\u003e#39278\u003c/a\u003e)\nrelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\nrelease(openai): 1.5.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39653\"\u003e#39653\u003c/a\u003e)\nfix(openai): preserve streamed encrypted reasoning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39635\"\u003e#39635\u003c/a\u003e)\nchore(infra): support langsmith gateway in CI (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39651\"\u003e#39651\u003c/a\u003e)\nrelease(openai): 1.5.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39629\"\u003e#39629\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/60357692c76651a7cd6153496a24658fa355bdcc\"\u003e\u003ccode\u003e6035769\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40339\"\u003e#40339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/a7b0f0ae50acebb527a25e153ff16621d37ba650\"\u003e\u003ccode\u003ea7b0f0a\u003c/code\u003e\u003c/a\u003e docs: update OpenWiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40318\"\u003e#40318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1611938f49dda48aa069d1fdce429430257488b7\"\u003e\u003ccode\u003e1611938\u003c/code\u003e\u003c/a\u003e fix(openai): add GPT-6 Astra reasoning efforts (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40330\"\u003e#40330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f092c9a78b3c532ef4c01935c0d4514209ff9f96\"\u003e\u003ccode\u003ef092c9a\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40317\"\u003e#40317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/22f3421aeedec55962f712a34d86d9683bf6cf59\"\u003e\u003ccode\u003e22f3421\u003c/code\u003e\u003c/a\u003e docs: update OpenWiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40218\"\u003e#40218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1c40140b3daf80c5baa7427d707ef2beb6c404b2\"\u003e\u003ccode\u003e1c40140\u003c/code\u003e\u003c/a\u003e chore(deps): bump httpx2 from 2.10.0 to 2.12.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40309\"\u003e#40309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/db613a96050bc6e594fdcd618af7532264dcceb8\"\u003e\u003ccode\u003edb613a9\u003c/code\u003e\u003c/a\u003e fix(openai): bump \u003ccode\u003emax_completion_tokens\u003c/code\u003e in cache breakpoint integration tes...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9f2eb7f46719742875ebea9e31d53e168e8b81a2\"\u003e\u003ccode\u003e9f2eb7f\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40268\"\u003e#40268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/765eb32901fa524e1428f94a9ee91b371a63ab62\"\u003e\u003ccode\u003e765eb32\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40277\"\u003e#40277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e670c7a03ba36fd1516f0185f7ec1186c89aa471\"\u003e\u003ccode\u003ee670c7a\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40258\"\u003e#40258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-openai==1.3.5...langchain-openai==1.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.9 to 1.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.11\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8533\"\u003e#8533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8532\"\u003e#8532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8502\"\u003e#8502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump cryptography from 48.0.1 to 50.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8528\"\u003e#8528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-sqlite): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8481\"\u003e#8481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8480\"\u003e#8480\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.10\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.9\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.10 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8462\"\u003e#8462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump jupyterlab from 4.5.9 to 4.5.10 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8440\"\u003e#8440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump setuptools from 80.9.0 to 83.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8435\"\u003e#8435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): type v3 stream_events return and native projections (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8389\"\u003e#8389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert(langgraph): delete TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8403\"\u003e#8403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): drop tags from TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8402\"\u003e#8402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8362\"\u003e#8362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump mistune from 3.2.1 to 3.3.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8317\"\u003e#8317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump soupsieve from 2.8.1 to 2.8.4 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8318\"\u003e#8318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(cli): allow langgraph-api versions up to 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8319\"\u003e#8319\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/644815f9e5bc52ad8f7a5227a456227e9c3e639b\"\u003e\u003ccode\u003e644815f\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7d6b5790ba84ce38c26f27a533d8419a31103c36\"\u003e\u003ccode\u003e7d6b579\u003c/code\u003e\u003c/a\u003e feat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d56666f7fbf0d380ad84cdf0cbe5aa48ab0cc086\"\u003e\u003ccode\u003ed56666f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 7 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/6a2822d3c77dad49a96718de73095f18717728be\"\u003e\u003ccode\u003e6a2822d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 5 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fde3068970679184b68d3d068a92c83c966a4888\"\u003e\u003ccode\u003efde3068\u003c/code\u003e\u003c/a\u003e release(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.9...1.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph-checkpoint` from 4.1.1 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph-checkpoint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph-checkpoint==4.2.0\u003c/h2\u003e\n\u003cp\u003eChanges since checkpoint==4.1.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8490\"\u003e#8490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(checkpoint,checkpoint-postgres): add opt-in omit_expired to skip expired rows on read (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8354\"\u003e#8354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8248\"\u003e#8248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8173\"\u003e#8173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: standardize package \u003ccode\u003eREADME.md\u003c/code\u003e structure (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8064\"\u003e#8064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: migrate Python type checking to ty (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8002\"\u003e#8002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the major group in /libs/checkpoint with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7967\"\u003e#7967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 3 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7960\"\u003e#7960\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f22af6248c93df08b553e9a264f6367797e0fddb\"\u003e\u003ccode\u003ef22af62\u003c/code\u003e\u003c/a\u003e chore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/658541c4960f329864a2523fc7d52427e8190bed\"\u003e\u003ccode\u003e658541c\u003c/code\u003e\u003c/a\u003e chore(checkpoint-postgres,checkpoint-sqlite): enable PLC0415 lint rule (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8540\"\u003e#8540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fb3d5f0399222504e015fe959e0e79fdc6e00a65\"\u003e\u003ccode\u003efb3d5f0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/01521c1b1cc4c035f64b9be40f2913285128f526\"\u003e\u003ccode\u003e01521c1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/cd62febcfae628d0930d1f7d3cb3b5919d4b800f\"\u003e\u003ccode\u003ecd62feb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 update...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/checkpoint==4.1.1...checkpoint==4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.11.0 to 5.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental \u003ccode\u003epyemscripten_2026_0_wasm32\u003c/code\u003e (Pyodide) build support added. \u003cem\u003eHowever, the resulting builds are flaky at runtime and subject to various types of random crashes. Freezes on shutdown have also been observed.\u003c/em\u003e\nWhile these issues persist, PyEmscripten wheels will not be uploaded to PyPI, but they are included in the release process and can be downloaded from GitHub on an experimental basis. If you can help track down and fix these issues, please reach out.\nNote: Our PyEmscripten wheels are bigger than usual, as they are built with debug symbols (a non-debug build is not considered useful at this stage).\u003c/li\u003e\n\u003cli\u003eFixed compatibility with Python 3.6 and 3.7.\n\u003cul\u003e\n\u003cli\u003eRuntime support was inadvertently broken due to a faulty cached property backport which held only one cache per class, not per instance as should have been.\nThe accidental loss of caches broke key assumptions of our autoclose logic, which relies on \u003ccode\u003ecached_property\u003c/code\u003e since 5.8.0. (Earlier versions that did not make extensive use of cached properties might work but have not been explicitly tested.)\u003c/li\u003e\n\u003cli\u003eThis release replaces both \u003ccode\u003efunctools.cached_property\u003c/code\u003e and the faulty \u003ccode\u003efunctools.lru_cache()\u003c/code\u003e based backport with our own, backward compatible \u003ccode\u003ecached_property\u003c/code\u003e implementation along with thorough documentation.\u003c/li\u003e\n\u003cli\u003eAlso, fixed setup (i.e. source installation) with Python 3.6 and its max available setup dependency versions (that is, \u003ccode\u003esetuptools\u003c/code\u003e 59). This had probably been broken for a long time. (A few non-breaking issues remain, e.g. for some reason we end up with a \u003ccode\u003epurelib\u003c/code\u003e directory, but it should be \u003ccode\u003eplatlib\u003c/code\u003e.)\u003c/li\u003e\n\u003cli\u003eBear in mind that ctypesgen continues to require Python \u003ccode\u003e\u0026gt;=3.8\u003c/code\u003e at this time (3.6 compat not being a priority in that case), but you can install with \u003ccode\u003e--no-build-isolation\u003c/code\u003e and let the reference bindings be used, or try adding ctypesgen's \u003ccode\u003esrc/\u003c/code\u003e to \u003ccode\u003ePYTHONPATH\u003c/code\u003e to bypass setup, and see how it goes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNote: We do not plan to (and practically cannot) keep up compatibility with outdated Python versions indefinitely.\u003c/strong\u003e In particular, setup compatibility may be dropped sooner or later in favor of contemporary Python packaging concepts, like migrating as much as possible to \u003ccode\u003epyproject.toml\u003c/code\u003e. That said, we are happy to restore compatibility at this point, and fix any \u003cem\u003eunintentional\u003c/em\u003e breakage.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eMANIFEST.in\u003c/code\u003e missing Windows spoof headers, which resulted in subtly incorrect bindings when installing from an sdist on Windows, as seen in test failures. (Release wheels have been unaffected and passed the test suite, so this issue went unnoticed for a while.)\u003c/li\u003e\n\u003cli\u003eBumped \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.1\u003c/code\u003e to \u003ccode\u003e2407.3\u003c/code\u003e. Made its setup python 3.6 compatible likewise (wheels should have worked before now). Changed versioning and release process so that CI no longer needs to push to the repository (may eventually become a blueprint for pypdfium2 itself). More documentation added, including \u003ccode\u003emanylinux2014\u003c/code\u003e POC.\u003c/li\u003e\n\u003cli\u003eInternal improvements (non-exhaustive):\n\u003cul\u003e\n\u003cli\u003eProperly clean up \u003ccode\u003e*.egg-info/\u003c/code\u003e and \u003ccode\u003ebuild/\u003c/code\u003e before packaging, to avoid mad file inclusion bugs (ran into this while working on setup include rules).\u003c/li\u003e\n\u003cli\u003eMigrated from requirements files to PEP 735 dependency groups (\u003ccode\u003epyproject.toml\u003c/code\u003e).\nRecent enough \u003ccode\u003epip\u003c/code\u003e should be available to Python \u0026gt;= 3.9. For compatibility with older versions, feel free to use \u003ccode\u003e./utils/misc/install_dep_group.py\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eApplied dependency cooldowns to internal callers of \u003ccode\u003epip install\u003c/code\u003e. Always use virtual environments in CI. Use lockfiles in sensitive areas (e.g. publish jobs).\u003c/li\u003e\n\u003cli\u003eRearranged \u0026amp; improved utilities. Cleaner distinction between \u003ccode\u003esetupsrc/\u003c/code\u003e and \u003ccode\u003eutils/\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eWork around persistent i686 container network issues by downgrading host runner to \u003ccode\u003eubuntu-24.04\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eLet \u003ccode\u003esetupsrc/\u003c/code\u003e share code from \u003ccode\u003esrc/\u003c/code\u003e through a \u003ccode\u003epypdfium2_cfg._shared\u003c/code\u003e submodule that can be added to \u003ccode\u003esys.path\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[manylinux_mipsle]\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\u003cblockquote\u003e\n\u003cp\u003e[!CAUTION]\nThe following builds are affected by known, major issues (e.g. endianness bugs, crashes, freezes) and are \u003cstrong\u003eNOT\u003c/strong\u003e considered ready for production use:\n\u003ccode\u003e[manylinux_s390x, musllinux_s390x, pyodide_wasm32]\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eCommit logs\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eCommits between \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.12.1\"\u003e\u003ccode\u003e5.12.1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.13.0\"\u003e\u003ccode\u003e5.13.0\u003c/code\u003e\u003c/a\u003e (latest commit first):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea4659102\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de35\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367a\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e78\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce0\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd619\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\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/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea465910\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de3\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e7\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd61\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3282e36375fd6e139f885ff634747ab0fe643e66\"\u003e\u003ccode\u003e3282e36\u003c/code\u003e\u003c/a\u003e Add zizmor to check step\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/07b84aaaa9c4c44429e0316c15c179b64c004d0a\"\u003e\u003ccode\u003e07b84aa\u003c/code\u003e\u003c/a\u003e Progress changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/6ec38d2aa64d59f02892ddf07f601bbdb5bbf53e\"\u003e\u003ccode\u003e6ec38d2\u003c/code\u003e\u003c/a\u003e git_net_additions: further improve fallback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b5cdd7c7fcd2c01cd7744b6824f977bbbcb831c6\"\u003e\u003ccode\u003eb5cdd7c\u003c/code\u003e\u003c/a\u003e git_net_additions: fancier fallback for binary files\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.11.0...5.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.4 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.5 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.5\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix numpy deprecations by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/505\"\u003educkdb/duckdb-python#505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix alias of \u003ccode\u003eDuckDBPyRelation.query\u003c/code\u003e (closes \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/468\"\u003e#468\u003c/a\u003e) by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/524\"\u003educkdb/duckdb-python#524\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/duckdb/duckdb-python/commit/b236c8194ed14c7a7c685e0534dde501cc855b3a\"\u003e\u003ccode\u003eb236c81\u003c/code\u003e\u003c/a\u003e Pin submodule to release hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/e6a21c5b5d65d741fafd5a7389c93b8b86a7f249\"\u003e\u003ccode\u003ee6a21c5\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/f637bf42683030cbb108268581b866f13cb75031\"\u003e\u003ccode\u003ef637bf4\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/4c5c73c63381bd0587fd42b41093c8f0abe9f17c\"\u003e\u003ccode\u003e4c5c73c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6fae28061912de88c3c0f6e6ad6b2f3fc5ee5235\"\u003e\u003ccode\u003e6fae280\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/d8d5f0a36003c9090ea9480cdefa8f4b4122fece\"\u003e\u003ccode\u003ed8d5f0a\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5d85f06025e83e3d2c69813acf4b2dc02bebc415\"\u003e\u003ccode\u003e5d85f06\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c3cbf8d9ca87cea3dfbb89bfa2102ff4ec530f00\"\u003e\u003ccode\u003ec3cbf8d\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/93418b65c6ca821d71d9a091fb5218ad55d8a4eb\"\u003e\u003ccode\u003e93418b6\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/24f1915b590e1e663a14c0bff9e49bf28ebece9b\"\u003e\u003ccode\u003e24f1915\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.4...v1.5.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.9.0 to 1.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains a few bug fixes and is the first version supporting Python 3.15.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\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/scikit-learn/scikit-learn/commit/866c0f51e7560ef0303cbcc5f159df5382ea9e3f\"\u003e\u003ccode\u003e866c0f5\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/12f135fbffe3b3e7e294e4ef16f0b59f68e6a6b9\"\u003e\u003ccode\u003e12f135f\u003c/code\u003e\u003c/a\u003e update upper bounds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/43ff2f20bc5bfbe92b9cd3ec9d86214da8ee2c6e\"\u003e\u003ccode\u003e43ff2f2\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b8515241202663142b65dbe92294e96a6dc5def2\"\u003e\u003ccode\u003eb851524\u003c/code\u003e\u003c/a\u003e DOC Mark dev index as orphan (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34916\"\u003e#34916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/01d56d48da18e7b365c4d2ebcd5d1fddaa24dd12\"\u003e\u003ccode\u003e01d56d4\u003c/code\u003e\u003c/a\u003e DOC Fix wikipedia principal eigenvector example references (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34915\"\u003e#34915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b86a1e227c2c424b17f8872d4094bbbc061e32c9\"\u003e\u003ccode\u003eb86a1e2\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d282698440cec541f2427794b8c205fb4b1420be\"\u003e\u003ccode\u003ed282698\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34897\"\u003e#34897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/eb34279083fe9297d141efddceaf38c596a49766\"\u003e\u003ccode\u003eeb34279\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/7581303c447a0daa07fa74ba8104e327c11f1dc5\"\u003e\u003ccode\u003e7581303\u003c/code\u003e\u003c/a\u003e FIX: Fix \u003ccode\u003eQuantileTransformer(ignore_implicit_zeros=True)\u003c/code\u003e sub-sampling behav...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ac47f4de75eacad880b77db09aa1f677f6038274\"\u003e\u003ccode\u003eac47f4d\u003c/code\u003e\u003c/a\u003e FIX: avoid EfficiencyWarning in OPTICS with metric='precomputed' (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34692\"\u003e#34692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.9.0...1.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.5.3 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.6.0 - 2026/08/31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix caching of functions whose source cannot be retrieved, such as functions\ndefined in a notebook cell. Their identity fell back to\n\u003ccode\u003estr(hash(func.__code__))\u003c/code\u003e, which is salted by \u003ccode\u003ePYTHONHASHSEED\u003c/code\u003e and so\ndiffered between processes. A worker reading the \u003ccode\u003efunc_code.py\u003c/code\u003e written by\nanother one concluded that the function had changed and wiped the whole\ncache directory for it, discarding results computed by its peers.\n\u003ccode\u003efunc_code.py\u003c/code\u003e is also no longer rewritten in place, so a reader can no\nlonger catch it half-written and draw the same conclusion.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1694\"\u003ejoblib/joblib#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop python 3.9 support. The oldest supported Python version\nis now Python 3.10.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1773\"\u003ejoblib/joblib#1773\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eeval_expr\u003c/code\u003e (used to evaluate the \u003ccode\u003epre_dispatch\u003c/code\u003e argument of\n\u003ccode\u003eParallel\u003c/code\u003e) to raise a \u003ccode\u003eValueError\u003c/code\u003e as documented instead of leaking a\n\u003ccode\u003eZeroDivisionError\u003c/code\u003e for expressions that divide or take a modulo by zero.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1810\"\u003ejoblib/joblib#1810\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMemorizedResult\u003c/code\u003e now forwards \u003ccode\u003emmap_mode\u003c/code\u003e to its store backend, so a\ncached array reconstructed from a location is memory-mapped as requested\ninstead of being loaded fully into memory.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1799\"\u003ejoblib/joblib#1799\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnvendor cloudpickle to more quickly benefit from maintenance releases\nof cloudpickle\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1775\"\u003ejoblib/joblib#1775\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMemory.cache\u003c/code\u003e for functions with a keyword-only argument that has a\ndefault declared before a keyword-only argument without a default.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1731\"\u003ejoblib/joblib#1731\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behavior of \u003ccode\u003efilter_args\u003c/code\u003e on some precise cases.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1800\"\u003ejoblib/joblib#1800\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a concurrency error that could happen with unordered generator.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1789\"\u003ejoblib/joblib#1789\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003edump()\u003c/code\u003e now accepts any input \u003ccode\u003eos.PathLike\u003c/code\u003e object to be consistent with\n\u003ccode\u003eload\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1812\"\u003ejoblib/joblib#1812\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe documentation now uses pydata sphinx theme. Furthermore, optional dependencies\n\u003ccode\u003etest\u003c/code\u003e and \u003ccode\u003edocs\u003c/code\u003e have been added to \u003ccode\u003epyproject.toml\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1774\"\u003ejoblib/joblib#1774\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky 3.6.0\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/joblib/joblib/commit/cd9a6b05fc4f2b1c8202eb62c4e863484f8cc099\"\u003e\u003ccode\u003ecd9a6b0\u003c/code\u003e\u003c/a\u003e Release 1.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1844\"\u003e#1844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/d873f972949d78166af6c945667c53f04d41fed6\"\u003e\u003ccode\u003ed873f97\u003c/code\u003e\u003c/a\u003e MNT vendor loky 3.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4ff61afd0849f18fddf5fbd137c1f02bfaed5223\"\u003e\u003ccode\u003e4ff61af\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/804f4725e1a27b1425c8aabcf7312ceb11c3a07d\"\u003e\u003ccode\u003e804f472\u003c/code\u003e\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/Vatsa1374/Vibe-trading-/pull/26","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vatsa1374%2FVibe-trading-/issues/26","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/26/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-12T09:04:01.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5432355814","node_id":"PR_kwDOSVkxv88AAAABDPdmrg","number":10,"state":"open","title":"chore(deps): bump the python-deps group with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T09:04:01.000Z","updated_at":"2026-09-12T10:16:06.096Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-deps","update_count":18,"packages":[{"name":"scipy","old_version":"1.16.0","new_version":"1.17.1","repository_url":"https://github.com/scipy/scipy"},{"name":"scikit-learn","old_version":"1.7.2","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"cvxpy","old_version":"1.7.5","new_version":"1.9.2","repository_url":"https://github.com/cvxpy/cvxpy"},{"name":"numba","old_version":"0.63.1","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"baostock","old_version":"0.9.1","new_version":"0.9.3"},{"name":"akshare","old_version":"1.18.59","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"sqlalchemy","old_version":"2.0.36","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"matplotlib","old_version":"3.8.4","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"fastapi","old_version":"0.128.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"python-multipart","old_version":"0.0.6","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"lightgbm","old_version":"4.5.0","new_version":"4.7.0","repository_url":"https://github.com/lightgbm-org/LightGBM"},{"name":"shap","old_version":"0.46.0","new_version":"0.51.0","repository_url":"https://github.com/shap/shap"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 18 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [scipy](https://github.com/scipy/scipy) | `1.16.0` | `1.17.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.2` | `1.9.0` |\n| [cvxpy](https://github.com/cvxpy/cvxpy) | `1.7.5` | `1.9.2` |\n| [numba](https://github.com/numba/numba) | `0.63.1` | `0.67.0` |\n| [baostock](http://www.baostock.com) | `0.9.1` | `0.9.3` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.59` | `1.18.94` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.36` | `2.0.52` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.8.4` | `3.11.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.6` | `0.0.32` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [lightgbm](https://github.com/lightgbm-org/LightGBM) | `4.5.0` | `4.7.0` |\n| [shap](https://github.com/shap/shap) | `0.46.0` | `0.51.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.3` |\n\nUpdates `scipy` from 1.16.0 to 1.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy/releases\"\u003escipy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSciPy 1.17.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.17.1\u003c/code\u003e is a bug-fix release with no new features compared to \u003ccode\u003e1.17.0\u003c/code\u003e.\u003c/p\u003e\n\u003ch1\u003eAuthors\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eName (commits)\u003c/li\u003e\n\u003cli\u003eEvgeni Burovski (5)\u003c/li\u003e\n\u003cli\u003eLucas Colley (1)\u003c/li\u003e\n\u003cli\u003eChristoph Gohlke (1)\u003c/li\u003e\n\u003cli\u003eRalf Gommers (6)\u003c/li\u003e\n\u003cli\u003eMatt Haberland (5)\u003c/li\u003e\n\u003cli\u003eMatthias Koeppe (1)\u003c/li\u003e\n\u003cli\u003eNick ODell (1)\u003c/li\u003e\n\u003cli\u003eIlhan Polat (10)\u003c/li\u003e\n\u003cli\u003eTyler Reddy (44)\u003c/li\u003e\n\u003cli\u003eMartin Schuck (3)\u003c/li\u003e\n\u003cli\u003eDan Schult (3)\u003c/li\u003e\n\u003cli\u003estratakis (1) +\u003c/li\u003e\n\u003cli\u003eਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA total of 13 people contributed to this release.\nPeople with a \u0026quot;+\u0026quot; by their names contributed a patch for the first time.\nThis list of names is automatically generated, and may not be fully complete.\u003c/p\u003e\n\u003cp\u003eComplete issue list, PR list, and release asset hashes are available in the associated \u003ca href=\"https://github.com/scipy/scipy/releases/download/v1.17.1/README.txt\"\u003e\u003ccode\u003eREADME.txt\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch1\u003eSciPy 1.17.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eSciPy \u003ccode\u003e1.17.0\u003c/code\u003e is the culmination of 6 months of hard work. It contains\nmany new features, numerous bug-fixes, improved test coverage and better\ndocumentation. There have been a number of deprecations and API changes\nin this release, which are documented below. All users are encouraged to\nupgrade to this release, as there are a large number of bug-fixes and\noptimizations. Before upgrading, we recommend that users check that\ntheir own code does not use deprecated SciPy functionality (to do so,\nrun your code with \u003ccode\u003epython -Wd\u003c/code\u003e and check for \u003ccode\u003eDeprecationWarning\u003c/code\u003e s).\nOur development attention will now shift to bug-fix releases on the\n\u003ccode\u003e1.17.x\u003c/code\u003e branch, and on adding new features on the main branch.\u003c/p\u003e\n\u003cp\u003eThis release requires Python \u003ccode\u003e3.11\u003c/code\u003e-\u003ccode\u003e3.14\u003c/code\u003e and NumPy \u003ccode\u003e1.26.4\u003c/code\u003e or greater.\u003c/p\u003e\n\u003ch1\u003eHighlights of this release\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eMany SciPy functions have gained native support for batching of N-dimensional\narray input and additional support for the array API standard. An overall\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/scipy/scipy/commit/527eb7fd7953a1de068f94bf8b322f249b9405ae\"\u003e\u003ccode\u003e527eb7f\u003c/code\u003e\u003c/a\u003e REL: 1.17.1 release commit [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/f11663bf044f1cb5a0112a28ac238f902ae36eea\"\u003e\u003ccode\u003ef11663b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy/issues/24584\"\u003e#24584\u003c/a\u003e from tylerjereddy/treddy_prep_1.17.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/2c49e68b634d2657380ca7b65207c6122e83cb72\"\u003e\u003ccode\u003e2c49e68\u003c/code\u003e\u003c/a\u003e DOC: PR 24584 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/400fa15ed6f9fece4c3848e9eade0e7d5e5aece0\"\u003e\u003ccode\u003e400fa15\u003c/code\u003e\u003c/a\u003e safely convert index dtypes to intc for csgraph and superLU\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/8c704044ab6f8f3e94295f354dbadfcab9139837\"\u003e\u003ccode\u003e8c70404\u003c/code\u003e\u003c/a\u003e MAINT: PR 24584 revisions [wheel build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/6dda8c13c534a61bc56c7b11bb5841efbd37d9dd\"\u003e\u003ccode\u003e6dda8c1\u003c/code\u003e\u003c/a\u003e BUG: PR 24584 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/4a187e59ea9cde1f79b4fae9dbd8177adcf0ddf3\"\u003e\u003ccode\u003e4a187e5\u003c/code\u003e\u003c/a\u003e DOC: PR 24584 revisions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/463ee9f72a5f1afe3363e86344a55eea1c1ba477\"\u003e\u003ccode\u003e463ee9f\u003c/code\u003e\u003c/a\u003e ENH: linalg/inv: re-enable overwrite_a for 2D inputs (\u003ca href=\"https://redirect.github.com/scipy/scipy/issues/24442\"\u003e#24442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/df746eed5eae0243969fd8de07770c4ace1dc65c\"\u003e\u003ccode\u003edf746ee\u003c/code\u003e\u003c/a\u003e BUG: linalg: restore dtypes in inv, solve, det\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy/commit/246bfeecbe56200ae4e265a70e06ccc64daee9c2\"\u003e\u003ccode\u003e246bfee\u003c/code\u003e\u003c/a\u003e MAINT:optimize: Enable multi-phase init to DIRECT\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy/compare/v1.16.0...v1.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.7.2 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/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_9_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release adds \u003ca href=\"https://narwhals-dev.github.io/narwhals/\"\u003enarwhals\u003c/a\u003e as a new dependency that will help to improve dataframe interoperability across the project.\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eRelease 1.8.0\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.8.0 release.\u003c/p\u003e\n\u003cp\u003eYou can read the release highlights under \u003ca href=\"https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_8_0.html\"\u003ehttps://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_1_8_0.html\u003c/a\u003e and the long version of the change log under \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.8.html\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.8.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis version supports Python versions 3.11 to 3.14 and features support of free-threaded CPython.\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/77def0ed6e3beab57244885d2a584470e96c103d\"\u003e\u003ccode\u003e77def0e\u003c/code\u003e\u003c/a\u003e trigger wheel builder [cd build]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ee7c0b0e34ffe0f5eff8c7aeda49783f70bd9faa\"\u003e\u003ccode\u003eee7c0b0\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/3d7fb048fc5f05555a202d2b24307628841904b5\"\u003e\u003ccode\u003e3d7fb04\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8954e7baf1f827320b17817f0ab76d025f5e6421\"\u003e\u003ccode\u003e8954e7b\u003c/code\u003e\u003c/a\u003e DOC Release highlights for 1.9 (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34147\"\u003e#34147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/73a3eab9d7bc58b695e4da8765044815b90b8dee\"\u003e\u003ccode\u003e73a3eab\u003c/code\u003e\u003c/a\u003e Fix: Array-API - avoid failing for numpy fit + predict with sparse or array-l...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/8839aaeb2fa2a4e3ad2f0a5a69b5f427cffe1dd1\"\u003e\u003ccode\u003e8839aae\u003c/code\u003e\u003c/a\u003e DOC Thread-safety requirement for open_listener message consumer callback (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/4d2476a4e2acc9429b96d8ee80218a96d24c2bde\"\u003e\u003ccode\u003e4d2476a\u003c/code\u003e\u003c/a\u003e DOC Refactor array API docs page (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34054\"\u003e#34054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/f9f812fe6a4ea54c482da6b195773917b636365e\"\u003e\u003ccode\u003ef9f812f\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d779dc335a31d74ef472003d9012066f07ee8834\"\u003e\u003ccode\u003ed779dc3\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/6a03cf0906987ce77b37e780ccdebbe3f85e9235\"\u003e\u003ccode\u003e6a03cf0\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.7.2...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cvxpy` from 1.7.5 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cvxpy/cvxpy/releases\"\u003ecvxpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCVXPY 1.9.2\u003c/h1\u003e\n\u003cp\u003eThis patch release contains bug fixes and follow-up improvements for CVXPY 1.9.\u003c/p\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis new release totaled 34 PRs from 7 contributors.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ghackebeil\"\u003e\u003ccode\u003e@​ghackebeil\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3363\"\u003e#3363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/govindchari\"\u003e\u003ccode\u003e@​govindchari\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3411\"\u003e#3411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Iroy30\"\u003e\u003ccode\u003e@​Iroy30\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3351\"\u003e#3351\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3364\"\u003e#3364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrathamDesai07\"\u003e\u003ccode\u003e@​PrathamDesai07\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3409\"\u003e#3409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PTNobel\"\u003e\u003ccode\u003e@​PTNobel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3349\"\u003e#3349\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3352\"\u003e#3352\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3355\"\u003e#3355\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3356\"\u003e#3356\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3357\"\u003e#3357\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3358\"\u003e#3358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3370\"\u003e#3370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3388\"\u003e#3388\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3392\"\u003e#3392\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3394\"\u003e#3394\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3396\"\u003e#3396\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3397\"\u003e#3397\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3399\"\u003e#3399\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3401\"\u003e#3401\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3405\"\u003e#3405\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3406\"\u003e#3406\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3407\"\u003e#3407\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3412\"\u003e#3412\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3413\"\u003e#3413\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3414\"\u003e#3414\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3421\"\u003e#3421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SteveDiamond\"\u003e\u003ccode\u003e@​SteveDiamond\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3376\"\u003e#3376\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3377\"\u003e#3377\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3379\"\u003e#3379\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3380\"\u003e#3380\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3381\"\u003e#3381\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3382\"\u003e#3382\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/WilliamZhang20\"\u003e\u003ccode\u003e@​WilliamZhang20\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3360\"\u003e#3360\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3415\"\u003e#3415\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eCVXPY 1.9.1\u003c/h1\u003e\n\u003cp\u003eThis patch release contains bug fixes and follow-up improvements for CVXPY 1.9.\u003c/p\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis new release totaled 8 PRs from 3 contributors.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/brunoficoxpress\"\u003e\u003ccode\u003e@​brunoficoxpress\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3334\"\u003e#3334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PTNobel\"\u003e\u003ccode\u003e@​PTNobel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3332\"\u003e#3332\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3335\"\u003e#3335\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3338\"\u003e#3338\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3340\"\u003e#3340\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3341\"\u003e#3341\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3345\"\u003e#3345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/terryweng03\"\u003e\u003ccode\u003e@​terryweng03\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3336\"\u003e#3336\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCVXPY 1.9.0\u003c/h2\u003e\n\u003ch1\u003eCVXPY 1.9\u003c/h1\u003e\n\u003cp\u003eThis release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements.\u003c/p\u003e\n\u003cp\u003eThis version of CVXPY supports Python 3.11 through 3.14. We will support CVXPY 1.9 with bugfixes while developing the 1.10 release. CVXPY 1.8 and older are no longer supported.\u003c/p\u003e\n\u003ch2\u003eDisciplined Nonlinear Programming (DNLP)\u003c/h2\u003e\n\u003cp\u003eThis release introduces \u003cem\u003eDisciplined Nonlinear Programming\u003c/em\u003e (DNLP), a ruleset that extends CVXPY beyond convex optimization to a broad class of nonlinear problems. DNLP canonicalizes nonsmooth functions in the same way as DCP, but allows for general smooth functions to be used otherwise.\u003c/p\u003e\n\u003cp\u003eTo use DNLP, pass \u003ccode\u003enlp=True\u003c/code\u003e to \u003ccode\u003eproblem.solve(...)\u003c/code\u003e. Supported NLP solvers include \u003cstrong\u003eIPOPT\u003c/strong\u003e, \u003cstrong\u003eKNITRO\u003c/strong\u003e, \u003cstrong\u003eUNO\u003c/strong\u003e, and \u003cstrong\u003eCOPT\u003c/strong\u003e. See the DNLP tutorial for more details and examples.\u003c/p\u003e\n\u003ch2\u003eVariable bounds\u003c/h2\u003e\n\u003cp\u003eVariable bounds can now be specified with expressions involving parameters, and also support sparse bound arrays (when the variable itself is sparse). Many solvers now natively use variable bounds when they are provided.\u003c/p\u003e\n\u003ch2\u003eDPP for parametric quadratic objectives\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003equad_form(x, P)\u003c/code\u003e with a parametric PSD matrix \u003ccode\u003eP\u003c/code\u003e is now DPP-compliant on solvers that natively support quadratic objectives, allowing efficient re-solves when only \u003ccode\u003eP\u003c/code\u003e's value changes.\u003c/p\u003e\n\u003ch2\u003eNew features\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/cvxpy/cvxpy/commit/7cb26d3ec6269234cf275b3b92ca5443628e24c1\"\u003e\u003ccode\u003e7cb26d3\u003c/code\u003e\u003c/a\u003e Release v1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/bcad203bdda05c2822861fd241d605ec90845d4d\"\u003e\u003ccode\u003ebcad203\u003c/code\u003e\u003c/a\u003e Patch/1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/fac9f6fa89bef7b0aa5f174a0bdf2bd10a9193e2\"\u003e\u003ccode\u003efac9f6f\u003c/code\u003e\u003c/a\u003e CI: install Moreau from PyPI instead of private Fury index\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/a89e5cf9055b15b2d917cd3830ad1986968e79af\"\u003e\u003ccode\u003ea89e5cf\u003c/code\u003e\u003c/a\u003e Fix N-D parametric matmul in the COO and SCIPY canonicalization backends (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3401\"\u003e#3401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/c6ac6c75f280720f4286e1c826cbeb98f6230ff7\"\u003e\u003ccode\u003ec6ac6c7\u003c/code\u003e\u003c/a\u003e Add missing numpy_numeric decorator to entr.numeric (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3379\"\u003e#3379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/6ba794a25e95500cc801fe222172ef2212232fe5\"\u003e\u003ccode\u003e6ba794a\u003c/code\u003e\u003c/a\u003e Fix scrambled ExpCone duals for matrix-shaped arguments (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/eeddbb77932696abed4d5af1aa0f8474341ed5da\"\u003e\u003ccode\u003eeeddbb7\u003c/code\u003e\u003c/a\u003e fix cone head lb (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/20ae79d57fa0889bdf6f7b3aad38b35d53dcdd5e\"\u003e\u003ccode\u003e20ae79d\u003c/code\u003e\u003c/a\u003e Dedup identical subtrees in Dcp2Cone canonicalization (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3355\"\u003e#3355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/eeb13c3ad3bc2c0c050ec0ab2e650a7a22429a54\"\u003e\u003ccode\u003eeeb13c3\u003c/code\u003e\u003c/a\u003e Updates to the wishlist (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cvxpy/cvxpy/commit/951e8b8365610b580ee6fb7816ab5b6b1ce210c4\"\u003e\u003ccode\u003e951e8b8\u003c/code\u003e\u003c/a\u003e Fix factor-2 error in Hermitian PSD constraint dual recovery (\u003ca href=\"https://redirect.github.com/cvxpy/cvxpy/issues/3388\"\u003e#3388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cvxpy/cvxpy/compare/v1.7.5...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numba` from 0.63.1 to 0.67.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numba/numba/releases\"\u003enumba's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.67.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release, adding NumPy 2.5 support. Please view the release notes here:\n\u003ca href=\"https://numba.readthedocs.io/en/0.67.0/release/0.67.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/0.67.0/release/0.67.0-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.66.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release. Numba now upgrades to llvmlite 0.48 with LLVM 22. For detailed release notes, please refer: \u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.66.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.66.0-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.65.1\u003c/h2\u003e\n\u003cp\u003eNumba patch release, please refer to the detailed release notes here -\n\u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.65.1-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.65.1-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.65.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release, adding support for free-threading build. Please view the full release notes here:\n\u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.65.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.65.0-notes.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.64.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release, adding NumPy 2.4 support. Please view the release notes here:\n\u003ca href=\"https://numba.readthedocs.io/en/stable/release/0.64.0-notes.html\"\u003ehttps://numba.readthedocs.io/en/stable/release/0.64.0-notes.html\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/numba/numba/commit/3190b91b3dccd797c3382aaf7988ff8eb3079f79\"\u003e\u003ccode\u003e3190b91\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10772\"\u003e#10772\u003c/a\u003e from swap357/release0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/f68f603f3f0cd548449b1f79e1caa97a22bd6cef\"\u003e\u003ccode\u003ef68f603\u003c/code\u003e\u003c/a\u003e add current pr on 0.67 pr list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/86a975cab7780a411b11c4d3c663fba61185965a\"\u003e\u003ccode\u003e86a975c\u003c/code\u003e\u003c/a\u003e update final release date for 0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/c7f14cfb5ac9343e5069bef84d0f00c1b563a1dd\"\u003e\u003ccode\u003ec7f14cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10726\"\u003e#10726\u003c/a\u003e from swap357/pin_deps_0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/123fa28412ecc822ff8c289b8f9a08fe3137c57e\"\u003e\u003ccode\u003e123fa28\u003c/code\u003e\u003c/a\u003e update test refs and pin dependencies for release0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/0c893302def55ccd88f01d861053e51419bf587e\"\u003e\u003ccode\u003e0c89330\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10724\"\u003e#10724\u003c/a\u003e from swap357/changelog_0.67\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/ffaa0174c8ebce7415b5c54ad6b32c19dbb050b5\"\u003e\u003ccode\u003effaa017\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/10723\"\u003e#10723\u003c/a\u003e from swap357/update_version_support_table_0.67.0rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/af0d8790a4704f6f8a7a92648ff279c23b08dd0d\"\u003e\u003ccode\u003eaf0d879\u003c/code\u003e\u003c/a\u003e fix wrapping on release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/a5e4654b59bd5cc5ac09aeb819fea402f5821a35\"\u003e\u003ccode\u003ea5e4654\u003c/code\u003e\u003c/a\u003e Update docs/source/release/0.67.0-notes.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/e85720ed6063487bb2af94be50bb030a0d181732\"\u003e\u003ccode\u003ee85720e\u003c/code\u003e\u003c/a\u003e Update docs/source/release/0.67.0-notes.rst\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numba/numba/compare/0.63.1...0.67.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `baostock` from 0.9.1 to 0.9.3\n\nUpdates `akshare` from 1.18.59 to 1.18.94\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/akfamily/akshare/blob/main/docs/changelog.md\"\u003eakshare's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.18.94 fix: fix fund_money_fund_info_em interface\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 优化 stock_board_concept_hist_em 接口的空数据兜底逻辑：仅对合法空历史返回空 DataFrame，对无效概念板块名称或 BK 代码抛出明确异常\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.93 fix: fix fund_money_fund_info_em interface\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复 fund_money_fund_info_em 接口\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.92 fix: improve Xueqiu login requirement guidance\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 优化 stock_individual_basic_info_xq 系列接口在雪球返回 400016 时的提示信息，明确匿名访问当前受限且需要通过 `token=` 传入有效 `xq_a_token`\n2. 补充中概股、美股、港股雪球公司信息接口的登录态依赖说明\n3. 修复 fund_money_fund_info_em 接口因东方财富历史净值返回体新增字段而触发 Length mismatch 的问题\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.91 docs: migrate the Markdown parser to myst-parser\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 文档 Markdown 解析器由 recommonmark 迁移至 myst-parser，并移除随之无用的 sphinx-markdown-tables 与 markdown 依赖\n2. 修正 docs 目录下 25 个文件的标题层级，使每个页面具备唯一的一级标题且不再跳级\n3. 接口条目层级调整后可生成锚点，文档站中每个接口均支持直接链接定位\n4. 为 dependabot 增加依赖分组配置，避免多个拉取请求同时修改同一文件\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.90 build: declare \u003cstrong\u003eall\u003c/strong\u003e and drop the akqmt integration\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 为 akshare 声明 __all__，由 scripts/build_registry.py 生成并纳入 CI 校验\n2. 修复 from akshare import * 会额外导出 39 个子模块名的问题\n3. 移除 akqmt 集成及 full、qmt 两个附加依赖组\n4. 修正 README 中的 Python 版本要求、失效的仓库条幅与错误的代码风格条幅\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.89 build: raise the minimum supported Python version to 3.11\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 将 requires-python 提升至 3.11 以上，并同步 classifiers、CI 测试矩阵与 ruff target-version\n2. 修复 uv.lock 中为 Python 3.9 保留的旧版本解析分支所引发的 24 条依赖安全告警\n3. 新增 dependabot 配置，自动跟进 uv 与 GitHub Actions 的依赖更新\n4. 同步更新文档中关于 Python 最低版本的说明\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.88 fix: fix fund_portfolio_hold_em interface\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复 fund_portfolio_hold_em 接口\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.87 fix: fix interface docs\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复接口文档中接口半角符号问题\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.86 fix: fix interface docs\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 修复接口文档中接口半角符号问题\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e1.18.85 feat: add interface registry search API\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e1. 新增 ak.search 接口检索功能，支持按接口名精确定位与关键词模糊检索\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- 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/akfamily/akshare/commit/0e7db00cb98ac6709e2b553efb5a79629aca7a72\"\u003e\u003ccode\u003e0e7db00\u003c/code\u003e\u003c/a\u003e fix(stock_board_concept_hist_em): 优化错误处理与空数据兜底逻辑 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7406\"\u003e#7406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/e7d3e24e9128c7f32ece4142cd1f1bf1bfc86bd7\"\u003e\u003ccode\u003ee7d3e24\u003c/code\u003e\u003c/a\u003e fix(fund): 修复fund_money_fund_info_em接口字段不匹配问题 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7405\"\u003e#7405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/1b9aeb53c8c137e9b1a3a94d1427e8fa3174e32d\"\u003e\u003ccode\u003e1b9aeb5\u003c/code\u003e\u003c/a\u003e ci: bump astral-sh/setup-uv from 9.0.0 to 10.0.1 in the actions group (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7399\"\u003e#7399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/ea5b388f24a025bd20c6eaa12fff3325f975daab\"\u003e\u003ccode\u003eea5b388\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump ruff from 0.16.2 to 0.16.3 in the python group (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7400\"\u003e#7400\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/8623219ee91a4c4ed8ffa983cdc0f5bb7db7a264\"\u003e\u003ccode\u003e8623219\u003c/code\u003e\u003c/a\u003e fix(stock): 更新雪球token并完善接口登录态说明 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7398\"\u003e#7398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/1248fdd05a2dda92937d4cd39c0957825f2f7f6e\"\u003e\u003ccode\u003e1248fdd\u003c/code\u003e\u003c/a\u003e ci: bump the actions group with 3 updates (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7394\"\u003e#7394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/e7912a6e4c11cb79b2d4b0ba9861e52b6ae58823\"\u003e\u003ccode\u003ee7912a6\u003c/code\u003e\u003c/a\u003e build(deps): bump the python group with 3 updates (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7395\"\u003e#7395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/8bfe862bb69364ae40646618ca9f54b19593ff3f\"\u003e\u003ccode\u003e8bfe862\u003c/code\u003e\u003c/a\u003e docs: 发布1.18.91版本，优化文档解析器与结构 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7393\"\u003e#7393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/761437923331c02708e1a58cc41c93dd7ff46917\"\u003e\u003ccode\u003e7614379\u003c/code\u003e\u003c/a\u003e Dev (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7386\"\u003e#7386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akfamily/akshare/commit/02f358a520e4fb1cae72ed70bb2e18ba61738800\"\u003e\u003ccode\u003e02f358a\u003c/code\u003e\u003c/a\u003e fix(interface): 修复 fund_portfolio_hold_em 接口 (\u003ca href=\"https://redirect.github.com/akfamily/akshare/issues/7383\"\u003e#7383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/akfamily/akshare/compare/release-v1.18.59...release-v1.18.94\"\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.36 to 2.0.52\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.0.52\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2026\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Python 3.15 support has been added and tested, including minimal changes\nfor full compatibility.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13477\"\u003e#13477\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a result-column misalignment bug in ORM-enabled UPDATE statements\nwhere \u003ccode\u003esynchronize_session=\u0026quot;fetch\u0026quot;\u003c/code\u003e is in use, either explicitly or\nbecause the statement uses constructs such as CTEs that implicitly select\nfor it.  Columns in rows returned by \u003ccode\u003e.returning()\u003c/code\u003e could be returned\nunder incorrect keys (e.g. \u003ccode\u003erow[SomeClass.a]\u003c/code\u003e returning the value of\na different column), a problem most likely to manifest under concurrent\nworkloads.  ORM DELETE statements were not affected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13439\"\u003e#13439\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failed \u003ccode\u003e_orm.Session.bulk_insert_mappings()\u003c/code\u003e,\n\u003ccode\u003e_orm.Session.bulk_update_mappings()\u003c/code\u003e or\n\u003ccode\u003e_orm.Session.bulk_save_objects()\u003c/code\u003e call could leave the\n\u003ccode\u003e_orm.Session\u003c/code\u003e permanently in a \u0026quot;flushing\u0026quot; state, such as when the\ntransaction could not be begun because a previous flush had left it\nneeding a rollback.  Unlike \u003ccode\u003e_orm.Session.flush()\u003c/code\u003e, the bulk methods\nset the internal flushing flag and began the transaction outside of the\n\u003ccode\u003etry\u003c/code\u003e/\u003ccode\u003efinally\u003c/code\u003e block that resets it, so that neither\n\u003ccode\u003e_orm.Session.rollback()\u003c/code\u003e nor \u003ccode\u003e_orm.Session.close()\u003c/code\u003e would clear\nit, and every subsequent flush would raise \u003ccode\u003eInvalidRequestError: Session is already flushing\u003c/code\u003e.  Pull request courtesy Hamody We.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13485\"\u003e#13485\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where unpickling an ORM object that were loaded using loader\noptions making use of wildcard tokens, such as \u003ccode\u003e_orm.load_only()\u003c/code\u003e or\n\u003ccode\u003e_orm.raiseload()\u003c/code\u003e with \u003ccode\u003e\u0026quot;*\u0026quot;\u003c/code\u003e, would fail with \u003ccode\u003eKeyError\u003c/code\u003e or\n\u003ccode\u003eIndexError\u003c/code\u003e if the process doing the unpickling had not yet constructed\na loader path making use of that same token.  This would typically be\nobserved when the object were unpickled in a separate process, such as\nwith the \u003ccode\u003espawn\u003c/code\u003e or \u003ccode\u003eforkserver\u003c/code\u003e multiprocessing start methods, the\nlatter of which became the default on POSIX platforms as of Python 3.14.\nThe internal collection of these tokens is now established up front, so\nthat it is identical in every process.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\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\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\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/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.8.4 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.11.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix tight layout of multiple subplots with \u003ccode\u003esharey=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eNoNorm\u003c/code\u003e cursor formatting for \u003ccode\u003euint8\u003c/code\u003e images\u003c/li\u003e\n\u003cli\u003eFix occasional misalignment in reported mouse position (also fix a bug with canvas height)\u003c/li\u003e\n\u003cli\u003eFix clipped Axis labels on 3D plots with tight layout\u003c/li\u003e\n\u003cli\u003eFix inverted Axis on 3D plots\u003c/li\u003e\n\u003cli\u003eFix restoring 'auto' aspect in 3D axes after switching from 'equal'\u003c/li\u003e\n\u003cli\u003eFix missing glyphs when subsetting Type 1 fonts in PDF\u003c/li\u003e\n\u003cli\u003eFix oversized embedding of Type 42 fonts in PDF/PostScript files\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAs well as several documentation and typing improvements and corrections.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0\u003c/h2\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. \u003ca href=\"https://matplotlib.org/3.11.0/release/prev_whats_new/whats_new_3.11.0.html\"\u003eSee the release notes for more information\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc2\u003c/h2\u003e\n\u003cp\u003eThis is the second release candidate for the meso release 3.11.0.\u003c/p\u003e\n\u003cp\u003eThis release candidate fixes some problems with downstream packages, removes some missed deprecations, and corrects some additional minor bugs.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc1\u003c/h2\u003e\n\u003cp\u003eAfter an extended development stretch, we are pleased to announce the first release candidate of Matplotlib 3.11.0.\u003c/p\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner. Due to the update to the font rendering stack, we cannot guarantee that text will be bit-for-bit perfect with previous releases, so if you are using Matplotlib for testing, it may be necessary to introduce/raise a tolerance within your tests.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. Final release notes are still being curated, but you may browse \u003ca href=\"https://matplotlib.org/3.11.0/release/next_whats_new\"\u003ethe list of new features\u003c/a\u003e, \u003ca href=\"https://matplotlib.org/3.11.0/api/next_api_changes.html\"\u003eAPI changes\u003c/a\u003e, and \u003ca href=\"https://github.com/matplotlib/matplotlib/milestone/96?closed=1https://github.com/matplotlib/matplotlib/milestone/96?closed=1\"\u003eall issues/pull requests on the milestone\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs a note for downstream packagers, the font libraries have only been tested against the versions bundled with the wheels. It may be possible to expand the range of requirements, or that a requirement is too broad. Please report any issues you have building against external dependencies.\u003c/p\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\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/matplotlib/matplotlib/commit/3c1757a567c58e41e565313af2d3bcdc52076b43\"\u003e\u003ccode\u003e3c1757a\u003c/code\u003e\u003c/a\u003e REL: v3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/792c6b5fa9cd2567a80fa231af19b7770b8288e4\"\u003e\u003ccode\u003e792c6b5\u003c/code\u003e\u003c/a\u003e DOC: Prepare for 3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/aaff9f613a0886fdec0b4e20d9c5f1db15166d2c\"\u003e\u003ccode\u003eaaff9f6\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.0-doc' into v3.11.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d4f4527cce030c81eb699516bdd8c1cbab3a940d\"\u003e\u003ccode\u003ed4f4527\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32052\"\u003e#32052\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32038-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6ad4bcf48beaf05b8632e082dd35a1c8960324c8\"\u003e\u003ccode\u003e6ad4bcf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32050\"\u003e#32050\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31304-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/7fb74d3476247ee7aa078ff45ec60f25f1a9b535\"\u003e\u003ccode\u003e7fb74d3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32051\"\u003e#32051\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32037-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/c624aec7de6060e16d708fd70bd2e9302e95d3f3\"\u003e\u003ccode\u003ec624aec\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32038\"\u003e#32038\u003c/a\u003e: Fix occasional misalignment in reported mouse position (a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8eda2b79d27a4255380b97b49dcb61110690c0c1\"\u003e\u003ccode\u003e8eda2b7\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32037\"\u003e#32037\u003c/a\u003e: Bump the actions group with 3 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a0e7ae5521b59c25ced9c69e8d9aebc1b0bc7c6e\"\u003e\u003ccode\u003ea0e7ae5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31304\"\u003e#31304\u003c/a\u003e: Fix restoring 'auto' aspect in 3D axes after switching fr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/90013231a38de53af9414747a03ce010de2fe3d0\"\u003e\u003ccode\u003e9001323\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32047\"\u003e#32047\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32025-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.8.4...v3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.128.0 to 0.141.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \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 \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \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.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \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.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\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 \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \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.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\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/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.128.0...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.40.0 to 0.52.4\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.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\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\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.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.40.0...0.52.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.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/c...\n\n_Description has been truncated_","html_url":"https://github.com/sijie-Z/quant_platform/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sijie-Z%2Fquant_platform/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-11T02:22:46.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5419589648","node_id":"PR_kwDOPj-SKM8AAAABDFWSKQ","number":554,"state":"closed","title":"Bump the minor-and-patch group across 1 directory with 53 updates","user":"dependabot[bot]","labels":["dependencies","python","security"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-11T02:37:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-11T02:22:46.000Z","updated_at":"2026-09-11T02:37:10.000Z","time_to_close":858,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-and-patch","update_count":53,"packages":[{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.13.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asttokens","old_version":"3.0.1","new_version":"3.0.2","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"bleach","old_version":"6.3.0","new_version":"6.4.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2026.5.20","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"debugpy","old_version":"1.8.20","new_version":"1.8.21","repository_url":"https://github.com/microsoft/debugpy"},{"name":"fastapi","old_version":"0.136.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastjsonschema","old_version":"2.21.2","new_version":"2.22.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"ibm-cloud-sdk-core","old_version":"3.24.4","new_version":"3.26.1","repository_url":"https://github.com/IBM/python-sdk-core"},{"name":"ibm-watsonx-orchestrate-evaluation-framework","old_version":"1.0.8","new_version":"1.6.2"},{"name":"idna","old_version":"3.16","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"ipykernel","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"9.13.0","new_version":"9.17.1","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.8","new_version":"8.1.9","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"json5","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonargparse","old_version":"4.49.0","new_version":"4.52.0","repository_url":"https://github.com/mauvilsa/jsonargparse"},{"name":"jupyter-client","old_version":"8.8.0","new_version":"8.10.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-server","old_version":"2.18.2","new_version":"2.21.0","repository_url":"https://github.com/jupyter-server/jupyter_server"},{"name":"jupyterlab","old_version":"4.5.7","new_version":"4.6.3","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-widgets","old_version":"3.0.16","new_version":"3.0.17","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"langchain-core","old_version":"1.4.0","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.8.5","new_version":"0.12.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"marshmallow","old_version":"4.3.0","new_version":"4.3.1","repository_url":"https://github.com/marshmallow-code/marshmallow"},{"name":"mistune","old_version":"3.2.1","new_version":"3.3.4","repository_url":"https://github.com/lepture/mistune"},{"name":"nbclient","old_version":"0.10.4","new_version":"0.11.0","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbformat","old_version":"5.10.4","new_version":"5.11.1","repository_url":"https://github.com/jupyter/nbformat"},{"name":"notebook","old_version":"7.5.6","new_version":"7.6.2","repository_url":"https://github.com/jupyter/notebook"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"platformdirs","old_version":"4.9.6","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.25.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.47.0","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"pyzmq","old_version":"27.1.0","new_version":"27.2.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"tornado","old_version":"6.5.5","new_version":"6.5.8","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"traitlets","old_version":"5.15.0","new_version":"5.16.1","repository_url":"https://github.com/ipython/traitlets"},{"name":"typer","old_version":"0.25.1","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.48.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wcwidth","old_version":"0.7.0","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"widgetsnbextension","old_version":"4.0.15","new_version":"4.0.16"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 53 updates in the /siri-watsonx-orchestrate directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.15.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.1` | `3.0.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [bleach](https://github.com/mozilla/bleach) | `6.3.0` | `6.4.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.5.20` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.20` | `1.8.21` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.141.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.2` | `2.22.2` |\n| [ibm-cloud-sdk-core](https://github.com/IBM/python-sdk-core) | `3.24.4` | `3.26.1` |\n| ibm-watsonx-orchestrate-evaluation-framework | `1.0.8` | `1.6.2` |\n| [idna](https://github.com/kjd/idna) | `3.16` | `3.19` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `7.2.0` | `7.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.13.0` | `9.17.1` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.8` | `8.1.9` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.14.0` | `0.15.0` |\n| [jsonargparse](https://github.com/mauvilsa/jsonargparse) | `4.49.0` | `4.52.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.8.0` | `8.10.0` |\n| [jupyter-server](https://github.com/jupyter-server/jupyter_server) | `2.18.2` | `2.21.0` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.5.7` | `4.6.3` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.16` | `3.0.17` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.0` | `1.6.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.5` | `0.12.2` |\n| [marshmallow](https://github.com/marshmallow-code/marshmallow) | `4.3.0` | `4.3.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.2.1` | `3.3.4` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.4` | `0.11.0` |\n| [nbformat](https://github.com/jupyter/nbformat) | `5.10.4` | `5.11.1` |\n| [notebook](https://github.com/jupyter/notebook) | `7.5.6` | `7.6.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.6` | `4.11.7` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.25.0` | `0.26.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.47.0` | `2.48.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.1.0` | `27.2.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.5` | `6.5.8` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.15.0` | `5.16.1` |\n| [typer](https://github.com/fastapi/typer) | `0.25.1` | `0.27.2` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.48.0` | `0.52.4` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.7.0` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.15` | `4.0.16` |\n\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.13.0 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.13.0...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.1 to 3.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gristlabs/asttokens/releases\"\u003easttokens's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModernize type annotations by \u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/172\"\u003egristlabs/asttokens#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pypy CI by skipping redundant mypy runs on it by \u003ca href=\"https://github.com/dsagal\"\u003e\u003ccode\u003e@​dsagal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/173\"\u003egristlabs/asttokens#173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix IndexError on source mixing lone CR with LF line endings (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/105\"\u003e#105\u003c/a\u003e) by \u003ca href=\"https://github.com/apoorvdarshan\"\u003e\u003ccode\u003e@​apoorvdarshan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/174\"\u003egristlabs/asttokens#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelease modernization, and publish to PyPI from CI via trusted publishing by \u003ca href=\"https://github.com/dsagal\"\u003e\u003ccode\u003e@​dsagal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/175\"\u003egristlabs/asttokens#175\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/172\"\u003egristlabs/asttokens#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apoorvdarshan\"\u003e\u003ccode\u003e@​apoorvdarshan\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/pull/174\"\u003egristlabs/asttokens#174\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.1...v3.0.2\"\u003ehttps://github.com/gristlabs/asttokens/compare/v3.0.1...v3.0.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/gristlabs/asttokens/commit/f97a6e1403d9f0e93940a11b507524550a5c3896\"\u003e\u003ccode\u003ef97a6e1\u003c/code\u003e\u003c/a\u003e Release modernization, and publish to PyPI from CI via trusted publishing (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/175\"\u003e#175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bb3c487da039e21638150f53c2f8d23ba2d92826\"\u003e\u003ccode\u003ebb3c487\u003c/code\u003e\u003c/a\u003e Fix IndexError on source mixing lone CR with LF line endings (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/105\"\u003e#105\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/174\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/d1eed1023e1203f5392d3e2ebd1f195fdf4c1973\"\u003e\u003ccode\u003ed1eed10\u003c/code\u003e\u003c/a\u003e Fix pypy CI by skipping redundant mypy runs on it (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/173\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/b8834d38dc69eea2ceb401cf068e0c78394f3f68\"\u003e\u003ccode\u003eb8834d3\u003c/code\u003e\u003c/a\u003e Modernize type annotations (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/172\"\u003e#172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.1...v3.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.14.3 to 4.15.0\n\nUpdates `bleach` from 6.3.0 to 6.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.4.0 (June 5th, 2026)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNOTE: 2026-06-05: Bleach is no longer maintained. There will be no future\nreleases including for security issues.\u003c/strong\u003e\nSee issue: \u003ccode\u003e\u0026lt;https://github.com/mozilla/bleach/issues/698\u0026gt;\u003c/code\u003e__\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for pypy 3.10. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/764\"\u003e#764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix bug 2023812 / GHSA-8rfp-98v4-mmr6.\u003c/p\u003e\n\u003cp\u003eFix XSS issue with sanitize_uri_value where disallowed schemes with\nUnicode invisible characters wouldn't be rejected.\u003c/p\u003e\n\u003cp\u003eFor example::\u003c/p\u003e\n\u003cp\u003eimport bleach\npayload1 = '\u003c!-- raw HTML omitted --\u003eClick\u003c!-- raw HTML omitted --\u003e'\nresult1 = bleach.clean(payload1)\nprint(repr(result1))\u003c/p\u003e\n\u003cp\u003eoutputs::\u003c/p\u003e\n\u003cp\u003e'\u003c!-- raw HTML omitted --\u003eClick\u003c!-- raw HTML omitted --\u003e'\u003c/p\u003e\n\u003cp\u003eSee the advisory for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix GHSA-gj48-438w-jh9v.\u003c/p\u003e\n\u003cp\u003eFix issue where URI sanitization wasn't happening in formaction attributes.\u003c/p\u003e\n\u003cp\u003eSee the advisory for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for pypy 3.11. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/764\"\u003e#764\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop version max in tinycss2 pin. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/772\"\u003e#772\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis removes one of the things we had to keep checking and updating. Users\nnow own the responsibility for correctness with the version of tinycss2\nthey're using.\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/mozilla/bleach/commit/f0355a7af00500482c5292c6c83290c6a178068d\"\u003e\u003ccode\u003ef0355a7\u003c/code\u003e\u003c/a\u003e fix: fix last release date in CHANGES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/ae4e8a26706516ad01b92e66321b480208a440da\"\u003e\u003ccode\u003eae4e8a2\u003c/code\u003e\u003c/a\u003e chore: bleach 6.4.0 and final release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/970df58e9f0c55cc52244f3f0106e473a40d886d\"\u003e\u003ccode\u003e970df58\u003c/code\u003e\u003c/a\u003e fix: uri-sanitization in formaction attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/7c4867c32344d1c961107fae62240a6f0dc680dc\"\u003e\u003ccode\u003e7c4867c\u003c/code\u003e\u003c/a\u003e fix: xss bypass in allowed protocol test using unicode invisible characters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/913ab75992b845e2c9c060c41f24d46921db4693\"\u003e\u003ccode\u003e913ab75\u003c/code\u003e\u003c/a\u003e fix: reduce redundancy in workflow jobs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/218c15af455c8dec14f98fcb2e235f8680e93930\"\u003e\u003ccode\u003e218c15a\u003c/code\u003e\u003c/a\u003e fix: rework pip caching\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/4f0b097bf80548a022050e2f71f024d755a9f154\"\u003e\u003ccode\u003e4f0b097\u003c/code\u003e\u003c/a\u003e fix: fix tox platform restrictions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/e95a79d07bb5d792425c2bc0ef5dd03f6614f3bb\"\u003e\u003ccode\u003ee95a79d\u003c/code\u003e\u003c/a\u003e chore: update pytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/91539d4e80d4685b8f2bedc79076ff0ff6c1b911\"\u003e\u003ccode\u003e91539d4\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 5.0.3 to 5.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cd47b4ce495859065da23c2116f651e591e1e90d\"\u003e\u003ccode\u003ecd47b4c\u003c/code\u003e\u003c/a\u003e fix: handle left-angle-bracket that's not a tag (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/733\"\u003e#733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.3.0...v6.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.5.20 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.05.20...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.7 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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/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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\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/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.7...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.4.1 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.4.1...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.20 to 1.8.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.21\u003c/h2\u003e\n\u003cp\u003eFixes for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReturn evaluate result in DAP response body instead of writing to stdout: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent invalid \u003ccode\u003escopes\u003c/code\u003e request from crashing debug session: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2026\"\u003e#2026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip uninitialized \u003ccode\u003e__slots__\u003c/code\u003e in variable resolver: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2024\"\u003e#2024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003e-c\u003c/code\u003e arguments that are \u003ccode\u003ebytes\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix evaluation of variables from chained exception frames: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2018\"\u003e#2018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eContinueRequest\u003c/code\u003e with a specific \u003ccode\u003ethreadId\u003c/code\u003e no longer resumes all threads (in-process adapter): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2012\"\u003e#2012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid strong reference to exceptions during unwind: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2008\"\u003e#2008\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow error message on evaluate failures in the hover context: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2006\"\u003e#2006\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisplay \u003ccode\u003edlerror\u003c/code\u003e output when \u003ccode\u003edlopen\u003c/code\u003e fails: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2000\"\u003e#2000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace removed \u003ccode\u003epkgutil.get_loader\u003c/code\u003e with \u003ccode\u003eimportlib.util.find_spec\u003c/code\u003e in \u003ccode\u003eget_fullname\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1998\"\u003e#1998\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eEnhancements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to ignore all system exit codes: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2017\"\u003e#2017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePull changes from pydevd up to March 2026: \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2010\"\u003e#2010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInfrastructure work:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSuppress Flawfinder false positives on Cython memcpy / read-loop iterators (TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816219\"\u003e#2816219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e): \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2028\"\u003e#2028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2029\"\u003e#2029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2030\"\u003e#2030\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2031\"\u003e#2031\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/maxbachmann\"\u003e\u003ccode\u003e@​maxbachmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/mfussenegger\"\u003e\u003ccode\u003e@​mfussenegger\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/sambrightman\"\u003e\u003ccode\u003e@​sambrightman\u003c/code\u003e\u003c/a\u003e for the commits.\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/microsoft/debugpy/commit/858b05c08555cfc54efa7cf90e70184c7495b38e\"\u003e\u003ccode\u003e858b05c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816217\"\u003e#2816217\u003c/a\u003e: suppress Flawfinder false positive on Cython JoinPyUnicode ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/f0c34f133ad3eb7992ca50e45e5459f9d58f4be8\"\u003e\u003ccode\u003ef0c34f1\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816216\"\u003e#2816216\u003c/a\u003e: suppress Flawfinder false positive on Cython DIGIT_PAIRS_8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/4c70e13d0e3fc8eee5013cd2a41c7a6d752d55d3\"\u003e\u003ccode\u003e4c70e13\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816218\"\u003e#2816218\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/19c2b8c029975a6ba2e4e521d8fbdf5f1b3ed8fd\"\u003e\u003ccode\u003e19c2b8c\u003c/code\u003e\u003c/a\u003e Fix TSA \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2816220\"\u003e#2816220\u003c/a\u003e: suppress Flawfinder false positive on Cython read-loop iter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ab9263839637357f3372ffb550395ffbf8ce9f77\"\u003e\u003ccode\u003eab92638\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2031\"\u003e#2031\u003c/a\u003e from StellaHuang95/stellahuang/tsa-2816219-flawfinde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/12bd4fef7ea5c35248d9f175f5b0218b970fa64c\"\u003e\u003ccode\u003e12bd4fe\u003c/code\u003e\u003c/a\u003e Return evaluate result in DAP response body instead of writing to stdout (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2027\"\u003e#2027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/8bd57a7d446d6ec4d7dd4e580d00cdea193ddcd9\"\u003e\u003ccode\u003e8bd57a7\u003c/code\u003e\u003c/a\u003e Prevent invalid scopes request from crashing debug session (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2026\"\u003e#2026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/bf118c8d0ec97e584d2f3cfd781f04a745a1334c\"\u003e\u003ccode\u003ebf118c8\u003c/code\u003e\u003c/a\u003e Skip uninitialized \u003cstrong\u003eslots\u003c/strong\u003e in variable resolver (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2024\"\u003e#2024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/a55be0e6f0700646e0833097ab78b2e4ba68745b\"\u003e\u003ccode\u003ea55be0e\u003c/code\u003e\u003c/a\u003e Potential fix when \u003ccode\u003e-c\u003c/code\u003e arguments are bytes instead of a str (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2021\"\u003e#2021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/0f037adec6fb2f61ad225849e953188ec349adbc\"\u003e\u003ccode\u003e0f037ad\u003c/code\u003e\u003c/a\u003e Fix evaluation of variables from chained exception frames (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2018\"\u003e#2018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.20...v1.8.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.136.3 to 0.141.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \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 \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \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.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \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.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\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 \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pu...\n\n_Description has been truncated_","html_url":"https://github.com/IBM/oic-i-agentic-ai-tutorials/pull/554","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Foic-i-agentic-ai-tutorials/issues/554","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/554/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-10T17:34:08.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5415397868","node_id":"PR_kwDOS9agj88AAAABDB___g","number":385,"state":"closed","title":"chore(deps)(deps): Bump the python-minor-patch group across 1 directory with 91 updates","user":"dependabot[bot]","labels":["invalid","security","tech-debt","priority:p3","area:backend","dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-11T01:07:38.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-10T17:34:08.000Z","updated_at":"2026-09-11T01:07:48.000Z","time_to_close":27210,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): Bump","group_name":"python-minor-patch","update_count":91,"packages":[{"name":"strands-agents-tools","old_version":"0.8.5","new_version":"0.8.8","repository_url":"https://github.com/strands-agents/tools"},{"name":"boto3","old_version":"1.43.32","new_version":"1.43.89","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.43.55","new_version":"1.43.89","repository_url":"https://github.com/boto/botocore"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"awslabs-aws-api-mcp-server","old_version":"1.4.1","new_version":"1.5.4","repository_url":"https://github.com/awslabs/mcp"},{"name":"awslabs-billing-cost-management-mcp-server","old_version":"0.0.29","new_version":"0.0.36","repository_url":"https://github.com/awslabs/mcp"},{"name":"pypdf","old_version":"6.16.1","new_version":"6.18.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"bedrock-agentcore-starter-toolkit","old_version":"0.3.11","new_version":"0.3.12","repository_url":"https://github.com/aws/bedrock-agentcore-starter-toolkit"},{"name":"uv","old_version":"0.12.0","new_version":"0.12.10","repository_url":"https://github.com/astral-sh/uv"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.10.0","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"ast-serialize","old_version":"0.6.0","new_version":"0.10.0","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"awscli","old_version":"1.45.55","new_version":"1.46.1","repository_url":"https://github.com/aws/aws-cli"},{"name":"awscrt","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/awslabs/aws-crt-python"},{"name":"bedrock-agentcore","old_version":"1.19.0","new_version":"1.22.0","repository_url":"https://github.com/aws/bedrock-agentcore-sdk-python"},{"name":"caio","old_version":"0.9.25","new_version":"0.12.4","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.11.0","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"cyclopts","old_version":"4.18.0","new_version":"4.25.0","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"dill","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.4.0","new_version":"0.4.3","repository_url":"https://github.com/pypa/distlib"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"docutils","old_version":"0.19","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"filelock","old_version":"3.29.4","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"googleapis-common-protos","old_version":"1.71.0","new_version":"1.75.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"griffelib","old_version":"2.0.2","new_version":"2.3.0"},{"name":"grpcio","old_version":"1.81.1","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joserfc","old_version":"1.7.1","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"jsonschema-path","old_version":"0.3.4","new_version":"0.5.0","repository_url":"https://github.com/p1c2u/jsonschema-path"},{"name":"kubernetes","old_version":"36.0.2","new_version":"36.0.3","repository_url":"https://github.com/kubernetes-client/python"},{"name":"librt","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/mypyc/librt"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"markdownify","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/matthewwithanm/python-markdownify"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"ollama","old_version":"0.6.0","new_version":"0.6.2","repository_url":"https://github.com/ollama/ollama-python"},{"name":"opentelemetry-util-genai","old_version":"1.0b0","new_version":"1.1b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pathable","old_version":"0.4.4","new_version":"0.6.0","repository_url":"https://github.com/p1c2u/pathable"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"python-discovery","old_version":"1.4.2","new_version":"1.6.0","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rich-rst","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/wasi-master/rich-rst"},{"name":"rpds-py","old_version":"2026.5.1","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"ruamel-yaml","old_version":"0.18.16","new_version":"0.19.1"},{"name":"s3transfer","old_version":"0.19.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"slack-bolt","old_version":"1.26.0","new_version":"1.30.0","repository_url":"https://github.com/slackapi/bolt-python"},{"name":"slack-sdk","old_version":"3.37.0","new_version":"3.44.1","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"soupsieve","old_version":"2.9.1","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlglot","old_version":"30.12.0","new_version":"30.18.0","repository_url":"https://github.com/tobymao/sqlglot"},{"name":"sse-starlette","old_version":"3.0.3","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"strands-agents","old_version":"1.50.2","new_version":"1.54.0","repository_url":"https://github.com/strands-agents/harness-sdk"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.2.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"typer","old_version":"0.20.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.3","repository_url":"https://github.com/python/tzdata"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"21.5.1","new_version":"21.7.8","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"17.0.1","new_version":"17.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 91 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [strands-agents-tools](https://github.com/strands-agents/tools) | `0.8.5` | `0.8.8` |\n| [boto3](https://github.com/boto/boto3) | `1.43.32` | `1.43.89` |\n| [botocore](https://github.com/boto/botocore) | `1.43.55` | `1.43.89` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [awslabs-aws-api-mcp-server](https://github.com/awslabs/mcp) | `1.4.1` | `1.5.4` |\n| [awslabs-billing-cost-management-mcp-server](https://github.com/awslabs/mcp) | `0.0.29` | `0.0.36` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.1` | `6.18.0` |\n| [bedrock-agentcore-starter-toolkit](https://github.com/aws/bedrock-agentcore-starter-toolkit) | `0.3.11` | `0.3.12` |\n| [uv](https://github.com/astral-sh/uv) | `0.12.0` | `0.12.10` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.0` | `4.15.1` |\n| [asgiref](https://github.com/django/asgiref) | `3.10.0` | `3.12.1` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.6.0` | `0.10.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [awscli](https://github.com/aws/aws-cli) | `1.45.55` | `1.46.1` |\n| [awscrt](https://github.com/awslabs/aws-crt-python) | `0.36.0` | `0.36.2` |\n| [bedrock-agentcore](https://github.com/aws/bedrock-agentcore-sdk-python) | `1.19.0` | `1.22.0` |\n| [caio](https://github.com/mosquito/caio) | `0.9.25` | `0.12.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.11.0` | `7.16.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.18.0` | `4.25.0` |\n| [dill](https://github.com/uqfoundation/dill) | `0.4.0` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.4.0` | `0.4.3` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.23` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.29.4` | `3.32.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.71.0` | `1.75.3` |\n| griffelib | `2.0.2` | `2.3.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.81.1` | `1.83.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.1` | `1.7.5` |\n| [jsonschema-path](https://github.com/p1c2u/jsonschema-path) | `0.3.4` | `0.5.0` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `36.0.2` | `36.0.3` |\n| [librt](https://github.com/mypyc/librt) | `0.13.0` | `0.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [markdownify](https://github.com/matthewwithanm/python-markdownify) | `1.2.0` | `1.2.3` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.0` | `0.6.2` |\n| [opentelemetry-util-genai](https://github.com/open-telemetry/opentelemetry-python-contrib) | `1.0b0` | `1.1b0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pathable](https://github.com/p1c2u/pathable) | `0.4.4` | `0.6.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.11.7` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.4.2` | `1.6.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rich-rst](https://github.com/wasi-master/rich-rst) | `2.0.1` | `2.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.5.1` | `2026.6.3` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| ruamel-yaml | `0.18.16` | `0.19.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.19.0` | `0.19.2` |\n| [slack-bolt](https://github.com/slackapi/bolt-python) | `1.26.0` | `1.30.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.37.0` | `3.44.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.9.1` | `2.9.2` |\n| [sqlglot](https://github.com/tobymao/sqlglot) | `30.12.0` | `30.18.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.0.3` | `3.4.11` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [strands-agents](https://github.com/strands-agents/harness-sdk) | `1.50.2` | `1.54.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.2.0` | `3.3.0` |\n| [typer](https://github.com/fastapi/typer) | `0.20.0` | `0.27.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.5.1` | `21.7.8` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [websockets](https://github.com/python-websockets/websockets) | `17.0.1` | `17.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.3.0` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n\n\nUpdates `strands-agents-tools` from 0.8.5 to 0.8.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/strands-agents/tools/releases\"\u003estrands-agents-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.8\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.7..v0.8.8\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(mem0): make memory_id ownership check fail-closed  (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/596\"\u003e#596\u003c/a\u003e) (fd4feb0)\u003c/li\u003e\n\u003cli\u003efix(http_request): strip non-standard headers on cross-host redirects (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/595\"\u003e#595\u003c/a\u003e) (64db9d7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.7\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.6..v0.8.7\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e) (1174bd6)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e) (c7c0c28)\u003c/li\u003e\n\u003cli\u003efix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e) (a47c204)\u003c/li\u003e\n\u003cli\u003efix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e) (2425040)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/549\"\u003e#549\u003c/a\u003e) (badcb5c)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👷 CI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/583\"\u003e#583\u003c/a\u003e) (29df37f)\u003c/li\u003e\n\u003cli\u003eci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/561\"\u003e#561\u003c/a\u003e) (836b0d5)\u003c/li\u003e\n\u003cli\u003eci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e) (db4cf76)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.6\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.5..v0.8.6\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: deprecate 11 tools superseded by SDK capability, MCP servers, or nothing (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/566\"\u003e#566\u003c/a\u003e) (bddfd3a)\u003c/li\u003e\n\u003cli\u003efeat: deprecate sleep, editor, and shell in favor of SDK vended tools (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/550\"\u003e#550\u003c/a\u003e) (45bf7b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(environment): drive value masking from environment variable (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/545\"\u003e#545\u003c/a\u003e) (60b6390)\u003c/li\u003e\n\u003cli\u003efix(use_aws): gate and redact ssm parameter and kms responses (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/520\"\u003e#520\u003c/a\u003e) (f924945)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: note that tools are experimental and require an independent security review (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/547\"\u003e#547\u003c/a\u003e) (6702a90)\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/strands-agents/tools/commit/fd4feb0a2336745e706ea16b4da2fde1823d95f3\"\u003e\u003ccode\u003efd4feb0\u003c/code\u003e\u003c/a\u003e fix(mem0): make memory_id ownership check fail-closed  (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/64db9d768a63f0a31e37c242829c6334f252ea08\"\u003e\u003ccode\u003e64db9d7\u003c/code\u003e\u003c/a\u003e fix(http_request): strip non-standard headers on cross-host redirects (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/595\"\u003e#595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/c7c0c28ad9e450a3193e49d7f25b1435a2bd5d99\"\u003e\u003ccode\u003ec7c0c28\u003c/code\u003e\u003c/a\u003e fix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/29df37f0a6823125dcd685fda57b44e47841e8ec\"\u003e\u003ccode\u003e29df37f\u003c/code\u003e\u003c/a\u003e ci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/badcb5c42c1d601ceebb1bc732c6c7a2a2d53d8c\"\u003e\u003ccode\u003ebadcb5c\u003c/code\u003e\u003c/a\u003e docs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/a47c20443eadc223944eb134ea2f2d1b9c0638fc\"\u003e\u003ccode\u003ea47c204\u003c/code\u003e\u003c/a\u003e fix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/24250405149c69c1be1610f018e86417c1c4fc26\"\u003e\u003ccode\u003e2425040\u003c/code\u003e\u003c/a\u003e fix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/836b0d5615380a4d2b7f0897382db2eb5e695e95\"\u003e\u003ccode\u003e836b0d5\u003c/code\u003e\u003c/a\u003e ci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/1174bd667a66ec2b50ce0ee5e68dfb966334d407\"\u003e\u003ccode\u003e1174bd6\u003c/code\u003e\u003c/a\u003e feat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/db4cf769306aa9c76b78ce5444543f02f769d95d\"\u003e\u003ccode\u003edb4cf76\u003c/code\u003e\u003c/a\u003e ci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/strands-agents/tools/compare/v0.8.5...v0.8.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.32 to 1.43.89\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1895b95e819bcba9079578378773a5013d1648b8\"\u003e\u003ccode\u003e1895b95\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.89'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b85c52150ef8b7fe2190cdeb878061eb5ce281d1\"\u003e\u003ccode\u003eb85c521\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.89\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f7290830f9b9b4101d3596c6a1b4a0a1bcc9f77f\"\u003e\u003ccode\u003ef729083\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bb429b1d8d255e7ebd01e2ad8371ac8c449fa018\"\u003e\u003ccode\u003ebb429b1\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/257465b72f6dc940b8ec7525e35ebd1690d2f6f5\"\u003e\u003ccode\u003e257465b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e373d8d9e73a5764d22ce6776404fb35d8d7fa94\"\u003e\u003ccode\u003ee373d8d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.88\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6ce83dedf2bcf7089c3ab5fbae5347e384e43a6d\"\u003e\u003ccode\u003e6ce83de\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5740c2e1387ccd20b7028361a1d3b3e766b7f0e\"\u003e\u003ccode\u003ed5740c2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.87'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bd30961ebda9a9d63e9f9f1cbb4645f96082cd74\"\u003e\u003ccode\u003ebd30961\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.87' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/316b72cad4fd915c6e6a2e081336a1a473018a72\"\u003e\u003ccode\u003e316b72c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.87\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.32...1.43.89\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.43.55 to 1.43.89\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/acf9b2f1687af5cc1a5c00b9936121006b9a5f8a\"\u003e\u003ccode\u003eacf9b2f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.89'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b282cbf159154445ccb20d610b6aa5faf58c4f8f\"\u003e\u003ccode\u003eb282cbf\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.89\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6cb9a9345cb9b77df1c63c41460bb1133a94ac42\"\u003e\u003ccode\u003e6cb9a93\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/35b7c03ff2956534564abdccf8e4f2853d2f2985\"\u003e\u003ccode\u003e35b7c03\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6802a24c226236b94119345fff3613a9764e866d\"\u003e\u003ccode\u003e6802a24\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.88' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/5dbc8412eb696d870621675e9c89343aa2e032c4\"\u003e\u003ccode\u003e5dbc841\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.88\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/221da705f8c3db8fdcc59cc663edde3a247a2a68\"\u003e\u003ccode\u003e221da70\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/6a9e112fa6980053406c4b5eaef3a10c92e5d819\"\u003e\u003ccode\u003e6a9e112\u003c/code\u003e\u003c/a\u003e Merge customizations for SocialMessaging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/bab8989aa41152581b2cb8de45cd7f0fdc2d062b\"\u003e\u003ccode\u003ebab8989\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/boto/botocore/issues/3791\"\u003e#3791\u003c/a\u003e from Alan4506/docs/presign-sigv2-warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9f49da737201d6b965f753fcba47677b6e1af7ab\"\u003e\u003ccode\u003e9f49da7\u003c/code\u003e\u003c/a\u003e Address reviewer feedback on readability\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.43.55...1.43.89\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\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.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.4...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-aws-api-mcp-server` from 1.4.1 to 1.5.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-billing-cost-management-mcp-server` from 0.0.29 to 0.0.36\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.1 to 6.18.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.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003cp\u003ePlease note that this release requires users which previously overwrote the default limits to migrate to the new approach: \u003ca href=\"https://pypdf.readthedocs.io/en/6.18.0/user/security.html#global\"\u003eDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIn short:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eapply_configuration\u003c/code\u003e as a context manager to temporarily overwrite configuration values.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eoverwrite_configuration\u003c/code\u003e to change the configuration values for the whole session.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe old overwrites should continue to work in most cases. If you have migrated successfully and do not need the legacy handling anymore (which can cause some overhead), consider using the temporary \u003ccode\u003edisable_legacy_handling\u003c/code\u003e setting:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom pypdf import overwrite_configuration\r\n\u003cp\u003eoverwrite_configuration(disable_legacy_handling=True)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIn case you are experiencing some unexpected issues after the migration, consider opening a new issue (or commenting on an existing one) with the necessary details to reproduce it.\u003c/p\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\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\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\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\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\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.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\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\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\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\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e) by \u003ca href=\"https://github.com/petermik68-sudo\"\u003e\u003ccode\u003e@​petermik68-sudo\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 an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e) by \u003ca href=\"https://github.com/devYRPauli\"\u003e\u003ccode\u003e@​devYRPauli\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e) by \u003ca href=\"https://github.com/SomSamantray\"\u003e\u003ccode\u003e@​SomSamantray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\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.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\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/18e4c226a4c2dd7f187854015f52e87350f84161\"\u003e\u003ccode\u003e18e4c22\u003c/code\u003e\u003c/a\u003e REL: 6.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/82501d2993c6387833c4949d205caeb188f8bb9e\"\u003e\u003ccode\u003e82501d2\u003c/code\u003e\u003c/a\u003e SEC: Limit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d35834b5373e80bda9b6d3537eac699170ca52fd\"\u003e\u003ccode\u003ed35834b\u003c/code\u003e\u003c/a\u003e ENH: Draw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4b16bbb5ba97360d68f431481cc6624ece1c6bd6\"\u003e\u003ccode\u003e4b16bbb\u003c/code\u003e\u003c/a\u003e STY: Rename variable for readability (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a1ce7fb98e7491c59a7ce03977598649ab31d5fd\"\u003e\u003ccode\u003ea1ce7fb\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when a page tree entry is not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4048\"\u003e#4048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/06b97ced09de5b09c8e39dd2bfbc413f4a06be4a\"\u003e\u003ccode\u003e06b97ce\u003c/code\u003e\u003c/a\u003e DEV: Bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4053\"\u003e#4053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d3f790cc9f201fe7e83ec2ec971aef361a746b75\"\u003e\u003ccode\u003ed3f790c\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the annotations are not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4046\"\u003e#4046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/3dc716eaf16b7982ff44d6f45649c51abec99e63\"\u003e\u003ccode\u003e3dc716e\u003c/code\u003e\u003c/a\u003e STY: Enforce lowercase function variables (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4045\"\u003e#4045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ec2406f31146c28deb45c26fd833779570c4144a\"\u003e\u003ccode\u003eec2406f\u003c/code\u003e\u003c/a\u003e DEP: Rework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c76eed7bdd6c6a6f05dbcfea147bd41d6d21e598\"\u003e\u003ccode\u003ec76eed7\u003c/code\u003e\u003c/a\u003e REL: 6.17.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bedrock-agentcore-starter-toolkit` from 0.3.11 to 0.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/releases\"\u003ebedrock-agentcore-starter-toolkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBedrock AgentCore Starter Toolkit v0.3.12\u003c/h2\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install bedrock-agentcore-starter-toolkit==0.3.12\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/blob/v0.3.12/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRelease v0.3.11 by \u003ca href=\"https://github.com/agentcore-devx-automation\"\u003e\u003ccode\u003e@​agentcore-devx-automation\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/555\"\u003eaws/bedrock-agentcore-starter-toolkit#555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add input validation to memory fields by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/571\"\u003eaws/bedrock-agentcore-starter-toolkit#571\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/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ehttps://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\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/aws/bedrock-agentcore-starter-toolkit/blob/main/CHANGELOG.md\"\u003ebedrock-agentcore-starter-toolkit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.12] - 2026-08-19\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e) (e3fe8a2)\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e) (be24ff2)\u003c/li\u003e\n\u003cli\u003echore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e) (d149aa8)\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/aws/bedrock-agentcore-starter-toolkit/commit/e3fe8a210092db389e4583cec1a58ce5c52ac0ac\"\u003e\u003ccode\u003ee3fe8a2\u003c/code\u003e\u003c/a\u003e fix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/be24ff2e19d599544b1c0ce7a29e26e5f45038cd\"\u003e\u003ccode\u003ebe24ff2\u003c/code\u003e\u003c/a\u003e fix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/d149aa8d024824fb88109a4a2458acd0ea04885e\"\u003e\u003ccode\u003ed149aa8\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uv` from 0.12.0 to 0.12.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.10\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-04.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAttempt to revoke short-lived PyPI trusted-publishing tokens after \u003ccode\u003euv publish\u003c/code\u003e completes, including when publishing fails (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21423\"\u003e#21423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOmit \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings for packages outside the resolution from \u003ccode\u003euv.lock\u003c/code\u003e with the \u003ccode\u003emissing-exclude-newer-package-lock\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow terminal dependency cycles in \u003ccode\u003euv tree --invert\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21404\"\u003e#21404\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up locking large workspaces with conflicts by excluding unrelated extras and dependency groups from conflict simplification (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21399\"\u003e#21399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up \u003ccode\u003euv publish\u003c/code\u003e by hashing each artifact in a single blocking task and reusing the buffer across reads (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21389\"\u003e#21389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003e--locked\u003c/code\u003e from failing when \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings differ only for packages outside the resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when an absolute \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is moved later (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when a package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is disabled (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21450\"\u003e#21450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire an explicit \u003ccode\u003e--name\u003c/code\u003e when \u003ccode\u003euv init\u003c/code\u003e would infer a project name reserved for a Python interpreter (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21395\"\u003e#21395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrite package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoffs to \u003ccode\u003euv.lock\u003c/code\u003e in a deterministic order (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21453\"\u003e#21453\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.12.10\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/uv/releases/download/0.12.10/uv-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/uv/releases/download/0.12.10/uv-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload uv 0.12.10\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-apple-darwin.tar.gz\"\u003euv-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-apple-darwin.tar.gz\"\u003euv-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-pc-windows-msvc.zip\"\u003euv-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-i686-pc-windows-msvc.zip\"\u003euv-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-pc-windows-msvc.zip\"\u003euv-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-x86_64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.10\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-04.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAttempt to revoke short-lived PyPI trusted-publishing tokens after \u003ccode\u003euv publish\u003c/code\u003e completes, including when publishing fails (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21423\"\u003e#21423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOmit \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings for packages outside the resolution from \u003ccode\u003euv.lock\u003c/code\u003e with the \u003ccode\u003emissing-exclude-newer-package-lock\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow terminal dependency cycles in \u003ccode\u003euv tree --invert\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21404\"\u003e#21404\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up locking large workspaces with conflicts by excluding unrelated extras and dependency groups from conflict simplification (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21399\"\u003e#21399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up \u003ccode\u003euv publish\u003c/code\u003e by hashing each artifact in a single blocking task and reusing the buffer across reads (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21389\"\u003e#21389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent \u003ccode\u003e--locked\u003c/code\u003e from failing when \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings differ only for packages outside the resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when an absolute \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is moved later (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19571\"\u003e#19571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003euv lock --check\u003c/code\u003e to reuse a lockfile when a package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoff is disabled (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21450\"\u003e#21450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire an explicit \u003ccode\u003e--name\u003c/code\u003e when \u003ccode\u003euv init\u003c/code\u003e would infer a project name reserved for a Python interpreter (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21395\"\u003e#21395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrite package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoffs to \u003ccode\u003euv.lock\u003c/code\u003e in a deterministic order (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21453\"\u003e#21453\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.12.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-01.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd CPython 3.15.0rc2 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21413\"\u003e#21413\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--no-locked\u003c/code\u003e and \u003ccode\u003e--no-frozen\u003c/code\u003e to disable lock modes enabled by \u003ccode\u003eUV_LOCKED\u003c/code\u003e and \u003ccode\u003eUV_FROZEN\u003c/code\u003e for a single invocation (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21408\"\u003e#21408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport the exact command-line lock-mode flag in warnings and errors (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21402\"\u003e#21402\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up cold wheel installs by extracting each streaming ZIP archive in a single blocking task and reusing buffers across files (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21372\"\u003e#21372\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003easync_http_range_reader\u003c/code\u003e to 0.11.1 to address a potential memory-safety issue when reading metadata ranges from untrusted wheels (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21401\"\u003e#21401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove sensitive headers when redirects cross authentication realms, including same-host redirects that change URL schemes (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRedact secrets in signed URLs from retry diagnostics, including nested request errors (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGive \u003ccode\u003e--locked\u003c/code\u003e, \u003ccode\u003e--frozen\u003c/code\u003e, \u003ccode\u003e--check\u003c/code\u003e, and \u003ccode\u003e--check-exists\u003c/code\u003e precedence over conflicting \u003ccode\u003eUV_LOCKED\u003c/code\u003e and \u003ccode\u003eUV_FROZEN\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21396\"\u003e#21396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent concurrent uv processes from redundantly extracting the same local or source-built wheel (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21400\"\u003e#21400\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/astral-sh/uv/commit/3c979abda4530fe9bf3d92e9bcf5c5575e3b3126\"\u003e\u003ccode\u003e3c979ab\u003c/code\u003e\u003c/a\u003e Bump version to 0.12.10 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21475\"\u003e#21475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/e302ffe2c07680e794fd02ae31cbefd180b7fc2d\"\u003e\u003ccode\u003ee302ffe\u003c/code\u003e\u003c/a\u003e Fix signing dry-run secret access and manifest generation (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21474\"\u003e#21474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/18ab29580499d86b1ba195dbfcc0fe1654cd35e7\"\u003e\u003ccode\u003e18ab295\u003c/code\u003e\u003c/a\u003e Allow release preparation to update the lockfile (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21473\"\u003e#21473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/944d45d8ff5c2e319e9c688667b5680bf1f7a5ca\"\u003e\u003ccode\u003e944d45d\u003c/code\u003e\u003c/a\u003e Upgrade release preparation to uv 0.12.9 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21472\"\u003e#21472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/3e98bf51c2e7c39ad8f26d9098267d4b2b97fc9a\"\u003e\u003ccode\u003e3e98bf5\u003c/code\u003e\u003c/a\u003e Exercise signing for GitHub release archives (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21445\"\u003e#21445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/802a2d282e03f5775c4f2fb5cc0a154d3d991300\"\u003e\u003ccode\u003e802a2d2\u003c/code\u003e\u003c/a\u003e Use Python for signed wheel assembly (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21448\"\u003e#21448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/fc5bccada171f77ae2554caa2e139214203c07ad\"\u003e\u003ccode\u003efc5bcca\u003c/code\u003e\u003c/a\u003e Add Azure-backed release binary signing to release dry-runs (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21418\"\u003e#21418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/e90047bc10bbbc04db40165dcc32c7e5334af962\"\u003e\u003ccode\u003ee90047b\u003c/code\u003e\u003c/a\u003e Add a \u003ccode\u003euv-dev inject-signed-wheel-binaries\u003c/code\u003e command (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/20622\"\u003e#20622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/a5fc364c1545fdcb2e40abb71a5aa1ecab1ebf3a\"\u003e\u003ccode\u003ea5fc364\u003c/code\u003e\u003c/a\u003e Omit unused \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/227d1dbb33f5f1eb1956218fe100e81e377153c7\"\u003e\u003ccode\u003e227d1db\u003c/code\u003e\u003c/a\u003e Ignore unused \u003ccode\u003eexclude-newer-package\u003c/code\u003e settings (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.12.0...0.12.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.6.1 to 4.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.2 - 2026-08-10\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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/pre-commit/pre-commit/commit/9767b6c8211a6bf683875a0afcf2b390457a4b66\"\u003e\u003ccode\u003e9767b6c\u003c/code\u003e\u003c/a\u003e v4.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/42ee3ff5ac1cae639613c9ad002d0502ae82384f\"\u003e\u003ccode\u003e42ee3ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e from pre-commit/npm-build-scripts-11-x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/30566198cb2d05201625f92b660a34c38ffe2dc7\"\u003e\u003ccode\u003e3056619\u003c/code\u003e\u003c/a\u003e fix \u003ccode\u003elanguage: node\u003c/code\u003e for hooks with build scripts and npm 11.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.1...v4.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiofile` from 3.11.1 to 3.12.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mosquito/aiofile/releases\"\u003eaiofile's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.12.3\u003c/h2\u003e\n\u003cp\u003eUpdate README.md\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multi-library throughput benchmark by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/111\"\u003emosquito/aiofile#111\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd throughput comparison table to the README benchmark section by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/112\"\u003emosquito/aiofile#112\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix double close(), TextFileWrapper.read() overshoot, add closed attribute by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/110\"\u003emosquito/aiofile#110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump caio dependency to ~0.12.0 by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/109\"\u003emosquito/aiofile#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\"\u003ehttps://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/f1de9014ad7b7954e6417fc3c4d178d6ff540973\"\u003e\u003ccode\u003ef1de901\u003c/code\u003e\u003c/a\u003e Rework benchmark: subprocess-per-participant, fixed op count, real latency pe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/d1c0d9fd665c96166d336a114c3c0ca3babc514a\"\u003e\u003ccode\u003ed1c0d9f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/112\"\u003e#112\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/0434967d158cdb8aa86b0f610d33ba5e798f7b9f\"\u003e\u003ccode\u003e0434967\u003c/code\u003e\u003c/a\u003e Add throughput comparison table to the README benchmark section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/82b9d5b11e05a6abe74f2704f58c6e6bc71198fb\"\u003e\u003ccode\u003e82b9d5b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/111\"\u003e#111\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/ef32a02b31f01e6f1a13f84ff0bf1ac026b70175\"\u003e\u003ccode\u003eef32a02\u003c/code\u003e\u003c/a\u003e Add multi-library throughput benchmark\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/b6ab49e52891793fa4dbaae51290983549821980\"\u003e\u003ccode\u003eb6ab49e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/110\"\u003e#110\u003c/a\u003e from mosquito/fix/close-twice-and-textwrapper-read\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/955abe86f524ffcec09e435b0f17cf320562c9f0\"\u003e\u003ccode\u003e955abe8\u003c/code\u003e\u003c/a\u003e Bump markdown-pytest to ~0.6.5 and refresh other dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/3d8e378cd129aee38f90bf26ad34ae6f1baa9afe\"\u003e\u003ccode\u003e3d8e378\u003c/code\u003e\u003c/a\u003e Add free-threaded Python (3.13t, 3.14t) to the CI test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/31bd742607f0cf54675512e330378ce9b501e590\"\u003e\u003ccode\u003e31bd742\u003c/code\u003e\u003c/a\u003e Add closed attribute to AIOFile and file wrappers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/a84a46e64753664efe69d5ba5947bc92cdde5595\"\u003e\u003ccode\u003ea84a46e\u003c/code\u003e\u003c/a\u003e Fix TextFileWrapper.read() returning more characters than requested\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.git...\n\n_Description has been truncated_","html_url":"https://github.com/aws-solutions-library-samples/guidance-for-game-backend-and-infrastructure-agentic-workflows/pull/385","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-solutions-library-samples%2Fguidance-for-game-backend-and-infrastructure-agentic-workflows/issues/385","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/385/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":"/backend","pr_created_at":"2026-09-07T12:47:15.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5374880918","node_id":"PR_kwDOT_4wBc8AAAABChgY7g","number":10,"state":"open","title":"chore(deps): bump websocket-client from 1.9.0 to 1.9.2 in /backend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-07T12:47:15.000Z","updated_at":"2026-09-07T12:47:16.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.9.0 to 1.9.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.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=websocket-client\u0026package-manager=pip\u0026previous-version=1.9.0\u0026new-version=1.9.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/AzesmF/potok-app/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzesmF%2Fpotok-app/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-05T20:04:27.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5360599527","node_id":"PR_kwDOGywluc8AAAABCWdJSw","number":2552,"state":"open","title":"Bump the pip-updates group across 1 directory with 2 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T20:04:27.000Z","updated_at":"2026-09-05T20:04:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-updates","update_count":2,"packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"boto3","old_version":"1.43.75","new_version":"1.43.87","repository_url":"https://github.com/boto/boto3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-updates group with 2 updates in the /tests directory: [websocket-client](https://github.com/websocket-client/websocket-client) and [boto3](https://github.com/boto/boto3).\n\nUpdates `websocket-client` from 1.9.0 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.75 to 1.43.87\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5740c2e1387ccd20b7028361a1d3b3e766b7f0e\"\u003e\u003ccode\u003ed5740c2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.87'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/316b72cad4fd915c6e6a2e081336a1a473018a72\"\u003e\u003ccode\u003e316b72c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.87\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/17409b462b0111734cfde68b5d90730b7a5d34e2\"\u003e\u003ccode\u003e17409b4\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/81ae04772b0cb5ef0547f19f52d61836677f8569\"\u003e\u003ccode\u003e81ae047\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.86'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0e52e63f32af72a113d6c49c8084500b48010c74\"\u003e\u003ccode\u003e0e52e63\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.86' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/938cd05abce739ff491c302a269e628f9de72849\"\u003e\u003ccode\u003e938cd05\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.86\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c20fb35d514719a0cbff10fc85d7723af7137ca7\"\u003e\u003ccode\u003ec20fb35\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/eec256acb020f2027ec223c64f1ffc7dec74983c\"\u003e\u003ccode\u003eeec256a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.85'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/11ef970f9b3525d0505500fc8c99f2463c45da19\"\u003e\u003ccode\u003e11ef970\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.85' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/359c9b73be0ff585805e71af8ecf0602262aa4ad\"\u003e\u003ccode\u003e359c9b7\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.85\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.75...1.43.87\"\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/warp-tech/warpgate/pull/2552","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/warp-tech%2Fwarpgate/issues/2552","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2552/packages"}},{"old_version":"1.8.0","new_version":"1.9.2","update_type":"minor","path":null,"pr_created_at":"2026-09-05T17:33:20.000Z","version_change":"1.8.0 → 1.9.2","issue":{"uuid":"5359719805","node_id":"PR_kwDOR9i09M8AAAABCVx5cA","number":517,"state":"open","title":"chore(deps): bump the patch-and-minor group with 189 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T17:33:20.000Z","updated_at":"2026-09-05T17:33:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-and-minor","update_count":189,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/agronholm/anyio"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"idna","old_version":"3.10","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.2.1","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"aiohttp","old_version":"3.13.3","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"wheel","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"authlib","old_version":"1.6.9","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"nltk","old_version":"3.9.1","new_version":"3.10.3","repository_url":"https://github.com/nltk/nltk"},{"name":"pyjwt","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tornado","old_version":"6.5.5","new_version":"6.5.8","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"fastapi","old_version":"0.111.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"alembic","old_version":"1.18.4","new_version":"1.19.1","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"arq","old_version":"0.27.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.1","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.15.0"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"boto3","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/botocore"},{"name":"build","old_version":"1.3.0","new_version":"1.6.0","repository_url":"https://github.com/pypa/build"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"chromadb","old_version":"1.0.15","new_version":"1.5.9","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.2.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"colorlog","old_version":"6.9.0","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cross-web","old_version":"0.4.1","new_version":"0.7.0","repository_url":"https://github.com/usecross/cross-web"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"discord-py","old_version":"2.5.2","new_version":"2.7.1","repository_url":"https://github.com/Rapptz/discord.py"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fabric","old_version":"3.2.2","new_version":"3.2.3","repository_url":"https://github.com/fabric/fabric"},{"name":"fakeredis","old_version":"2.33.0","new_version":"2.37.1","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"feedparser","old_version":"6.0.11","new_version":"6.0.14","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"filelock","old_version":"3.20.3","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.6.1","repository_url":"https://github.com/miguelgrinberg/flask-socketio"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"fsspec","old_version":"2026.3.0","new_version":"2026.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geographiclib","old_version":"2.0","new_version":"2.1","repository_url":"https://github.com/geographiclib/geographiclib-python"},{"name":"geopy","old_version":"2.4.1","new_version":"2.5.0","repository_url":"https://github.com/geopy/geopy"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.61","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"google-auth","old_version":"2.40.3","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"graphql-core","old_version":"3.2.8","new_version":"3.2.12","repository_url":"https://github.com/graphql-python/graphql-core"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.5","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.74.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httptools","old_version":"0.6.4","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jiter","old_version":"0.10.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.1","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.25.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langgraph","old_version":"1.1.0","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.0.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.13","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.1","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.10.5","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.3.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msgpack","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.3","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.0.1","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"networkx","old_version":"3.5","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.3.2","new_version":"2.5.2","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.22.1","new_version":"1.29.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.98.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-distro","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pathspec","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pip-tools","old_version":"7.5.3","new_version":"7.6.1","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"platformdirs","old_version":"4.9.4","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.3.2","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"py-cord","old_version":"2.6.1","new_version":"2.8.1","repository_url":"https://github.com/Pycord-Development/pycord"},{"name":"pyasn1","old_version":"0.6.3","new_version":"0.6.4","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pybase64","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pylint","old_version":"4.0.5","new_version":"4.0.8","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypika","old_version":"0.48.9","new_version":"0.51.1","repository_url":"https://github.com/kayak/pypika"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"python-engineio","old_version":"4.12.2","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"python-socketio","old_version":"5.14.0","new_version":"5.16.4","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"qiskit","old_version":"2.3.1","new_version":"2.5.2","repository_url":"https://github.com/Qiskit/qiskit"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"ruamel-yaml","old_version":"0.18.14","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"rustworkx","old_version":"0.17.1","new_version":"0.18.1","repository_url":"https://github.com/Qiskit/rustworkx"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"safehttpx","old_version":"0.1.6","new_version":"0.1.7","repository_url":"https://github.com/gradio-app/safehttpx"},{"name":"scikit-learn","old_version":"1.7.1","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.12.0","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"smmap","old_version":"5.0.2","new_version":"5.0.3","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"soupsieve","old_version":"2.7","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"stevedore","old_version":"5.4.1","new_version":"5.9.1"},{"name":"strawberry-graphql","old_version":"0.312.3","new_version":"0.327.1","repository_url":"https://github.com/sponsors/strawberry-graphql"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tqdm","old_version":"4.66.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.16.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260712","repository_url":"https://github.com/python/typeshed"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.4","repository_url":"https://github.com/regebro/tzlocal"},{"name":"uuid-utils","old_version":"0.14.1","new_version":"0.17.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"yarl","old_version":"1.20.1","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"safety","old_version":"3.2.0","new_version":"3.8.1","repository_url":"https://github.com/pyupio/safety"},{"name":"opentelemetry-instrumentation-celery","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langchain-community","old_version":"0.3.5","new_version":"0.4.2","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"langserve","old_version":"0.2.1","new_version":"0.3.3","repository_url":"https://github.com/langchain-ai/langserve"},{"name":"autogen","old_version":"0.5.0","new_version":"0.14.1","repository_url":"https://github.com/ag2ai/ag2classic"},{"name":"eth-account","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/ApeWorX/eth-account"},{"name":"eth-keys","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/ApeWorX/eth-keys"},{"name":"semgrep","old_version":"1.92.0","new_version":"1.176.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"pytest-benchmark","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"accelerate","old_version":"1.10.0","new_version":"1.14.0","repository_url":"https://github.com/huggingface/accelerate"},{"name":"bitsandbytes","old_version":"0.46.1","new_version":"0.50.2","repository_url":"https://github.com/bitsandbytes-foundation/bitsandbytes"},{"name":"langchain-text-splitters","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.7.16","new_version":"0.12.1","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tokenizers","old_version":"0.21.4","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.2.0","new_version":"2.14.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"torchvision","old_version":"0.17.0","new_version":"0.29.0","repository_url":"https://github.com/pytorch/vision"},{"name":"torchaudio","old_version":"2.2.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/audio"},{"name":"scikit-image","old_version":"0.22.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"wyn-wav2lip","old_version":"0.1.0","new_version":"0.2.3"},{"name":"face-alignment","old_version":"1.4.1","new_version":"1.5.0","repository_url":"https://github.com/1adrianb/face-alignment"},{"name":"azure-cognitiveservices-speech","old_version":"1.35.0","new_version":"1.51.2"},{"name":"supabase","old_version":"2.3.4","new_version":"2.31.0","repository_url":"https://github.com/supabase/supabase-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-and-minor group with 189 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.14.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.5.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.19` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.2.1` | `0.16.5` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.26.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.3` | `3.14.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.2` | `0.48.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.9` | `1.8.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.10.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.0` | `2.13.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.32` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.5` | `6.5.8` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.0` | `0.141.1` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.19.1` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [arq](https://github.com/python-arq/arq) | `0.27.0` | `0.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.15.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [boto3](https://github.com/boto/boto3) | `1.42.64` | `1.43.86` |\n| [botocore](https://github.com/boto/botocore) | `1.42.64` | `1.43.86` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.6.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.15` | `1.5.9` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.5.0` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.9.0` | `6.12.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.0` |\n| [cross-web](https://github.com/usecross/cross-web) | `0.4.1` | `0.7.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [discord-py](https://github.com/Rapptz/discord.py) | `2.5.2` | `2.7.1` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fabric](https://github.com/fabric/fabric) | `3.2.2` | `3.2.3` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.33.0` | `2.37.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.11` | `6.0.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.32.5` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.5` |\n| [flask-socketio](https://github.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.6.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.64.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.3.0` | `2026.7.0` |\n| [geographiclib](https://github.com/geographiclib/geographiclib-python) | `2.0` | `2.1` |\n| [geopy](https://github.com/geopy/geopy) | `2.4.1` | `2.5.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.61` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.40.3` | `2.57.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.2` |\n| [graphql-core](https://github.com/graphql-python/graphql-core) | `3.2.8` | `3.2.12` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.5` |\n| [grpcio](https://github.com/grpc/grpc) | `1.74.0` | `1.83.1` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.4.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.8.0` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.10.0` | `0.16.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.6.0` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.5.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.1.0` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.0.1` | `4.2.0` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.8` | `1.1.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.13` | `0.4.4` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.4` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.1` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.5` | `3.11.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.3.0` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.2` | `1.2.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.3` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.0.1` | `2.25.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.2` | `2.5.2` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.22.1` | `1.29.0` |\n| [openai](https://github.com/openai/openai-python) | `1.98.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.65b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.1.0` | `1.1.1` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.3` | `7.6.1` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.4` | `4.11.7` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.5.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [py-cord](https://github.com/Pycord-Development/pycord) | `2.6.1` | `2.8.1` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.3` | `0.6.4` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.2` | `1.5.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.10.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.5` | `4.0.8` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pypika](https://github.com/kayak/pypika) | `0.48.9` | `0.51.1` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.2` | `4.14.0` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.4` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.0` | `5.16.4` |\n| [qiskit](https://github.com/Qiskit/qiskit) | `2.3.1` | `2.5.2` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.6` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| ruamel-yaml | `0.18.14` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [rustworkx](https://github.com/Qiskit/rustworkx) | `0.17.1` | `0.18.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.19.2` |\n| [safehttpx](https://github.com/gradio-app/safehttpx) | `0.1.6` | `0.1.7` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.1` | `1.9.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.12.0` | `1.18.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.9.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.52` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.4.1` | `5.9.1` |\n| [strawberry-graphql](https://github.com/sponsors/strawberry-graphql) | `0.312.3` | `0.327.1` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.13.3` | `0.15.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.66.1` | `4.70.0` |\n| [typer](https://github.com/fastapi/typer) | `0.16.0` | `0.27.2` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260712` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.16.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.4` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.14.1` | `0.17.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.52.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.2.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.20.1` | `1.24.5` |\n| [safety](https://github.com/pyupio/safety) | `3.2.0` | `3.8.1` |\n| [opentelemetry-instrumentation-celery](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.5` | `0.4.2` |\n| [langserve](https://github.com/langchain-ai/langserve) | `0.2.1` | `0.3.3` |\n| [autogen](https://github.com/ag2ai/ag2classic) | `0.5.0` | `0.14.1` |\n| [eth-account](https://github.com/ApeWorX/eth-account) | `0.13.0` | `0.14.0` |\n| [eth-keys](https://github.com/ApeWorX/eth-keys) | `0.7.1` | `0.8.0` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.92.0` | `1.176.0` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.1.0` | `5.3.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.167.1` |\n| [accelerate](https://github.com/huggingface/accelerate) | `1.10.0` | `1.14.0` |\n| [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes) | `0.46.1` | `0.50.2` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.1` | `1.1.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.7.16` | `0.12.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.8.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.4` | `0.23.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.14.0` |\n| [torchvision](https://github.com/pytorch/vision) | `0.17.0` | `0.29.0` |\n| [torchaudio](https://github.com/pytorch/audio) | `2.2.0` | `2.11.0` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.22.0` | `0.26.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.14.0` |\n| wyn-wav2lip | `0.1.0` | `0.2.3` |\n| [face-alignment](https://github.com/1adrianb/face-alignment) | `1.4.1` | `1.5.0` |\n| azure-cognitiveservices-speech | `1.35.0` | `1.51.2` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.3.4` | `2.31.0` |\n\nUpdates `anyio` from 4.9.0 to 4.14.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.14.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eByteReceiveStream.receive()\u003c/code\u003e implementations to raise a \u003ccode\u003eValueError\u003c/code\u003e when \u003ccode\u003emax_bytes\u003c/code\u003e is not a positive integer (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1191\"\u003e#1191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting \u003ccode\u003efloat(\u0026quot;inf\u0026quot;)\u003c/code\u003e when the limiter was instantiated outside of an event loop. The adapter setter checked for infinity by identity (\u003ccode\u003evalue is math.inf\u003c/code\u003e), so only the exact \u003ccode\u003emath.inf\u003c/code\u003e singleton was accepted, while every backend setter (using \u003ccode\u003emath.isinf()\u003c/code\u003e) accepts any positive infinity (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1189\"\u003e#1189\u003c/a\u003e; PR by \u003ca href=\"https://github.com/greymoth-jp\"\u003e\u003ccode\u003e@​greymoth-jp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eto_process.run_sync()\u003c/code\u003e deadlocking when the worker function writes enough data to \u003ccode\u003esys.stderr\u003c/code\u003e to fill the (undrained) pipe buffer. The worker process now redirects \u003ccode\u003esys.stderr\u003c/code\u003e to \u003ccode\u003eos.devnull\u003c/code\u003e as well, matching the documented behavior\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eTLSStream.wrap()\u003c/code\u003e matching an internationalized (unicode) host name against the peer certificate using IDNA 2003 (via the standard library) instead of IDNA 2008, which could cause the host name to be matched against the wrong certificate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1208\"\u003e#1208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.open_process()\u003c/code\u003e (and \u003ccode\u003erun_process()\u003c/code\u003e) ignoring the \u003ccode\u003eextra_groups\u003c/code\u003e argument, as it mistakenly passed the value of the \u003ccode\u003egroup\u003c/code\u003e argument instead (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1209\"\u003e#1209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.acquire_nowait()\u003c/code\u003e and \u003ccode\u003eCapacityLimiter.acquire_nowait_on_behalf_of()\u003c/code\u003e raising \u003ccode\u003etrio.WouldBlock\u003c/code\u003e instead of \u003ccode\u003eanyio.WouldBlock\u003c/code\u003e on the \u003ccode\u003etrio\u003c/code\u003e backend when there are no tokens available (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens (\u003ccode\u003eborrowed_tokens\u003c/code\u003e exceeding \u003ccode\u003etotal_tokens\u003c/code\u003e and \u003ccode\u003eavailable_tokens\u003c/code\u003e going negative) when a non-blocking acquire was made in the window between a token being released and the notified waiter resuming. The freed token is now reserved for the woken waiter right away, so the non-blocking acquire correctly raises \u003ccode\u003eWouldBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1170\"\u003e#1170\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed unnecessary CPU spin when delivering cancellation from \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio under certain conditions, including improper cancel scope nesting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1111\"\u003e#1111\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/c384f99687c64c59ed8a11c3a0f11a2d57daff71\"\u003e\u003ccode\u003ec384f99\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dbba29d1ade7936f18fb71ba24aa92978673482a\"\u003e\u003ccode\u003edbba29d\u003c/code\u003e\u003c/a\u003e Fixed 100% CPU spin on cancel scope misuse (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6bbc6c33caabc13af5bc4256f745027cf8d5d7b8\"\u003e\u003ccode\u003e6bbc6c3\u003c/code\u003e\u003c/a\u003e Fix CapacityLimiter over-granting tokens on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1172\"\u003e#1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f82b2537cbbe98f3df3f295499056ab7de0b15b\"\u003e\u003ccode\u003e6f82b25\u003c/code\u003e\u003c/a\u003e Refactored TestTLSStream.test_receive_invalid_max_bytes() to be less flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/be24b0414f67f604bcbdd5ea3bcc56ab920d872e\"\u003e\u003ccode\u003ebe24b04\u003c/code\u003e\u003c/a\u003e Relaxed timeouts to fix test flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/81135065749b4f60c06619b9caaf0a11871c1ddf\"\u003e\u003ccode\u003e8113506\u003c/code\u003e\u003c/a\u003e Fix test flakiness caused by slow callback duration logging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1e988b617b69588e33fecb75e36a9837245f562f\"\u003e\u003ccode\u003e1e988b6\u003c/code\u003e\u003c/a\u003e Fixed CapacityLimiter raising trio.WouldBlock instead of anyio.WouldBlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44713f345cd29dd4e7d76553c134543a1296cc62\"\u003e\u003ccode\u003e44713f3\u003c/code\u003e\u003c/a\u003e Pin setup-uv to a commit sha across downstream jobs (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1b7301c8264b0d2e8d24a5788fd29e93dea4040\"\u003e\u003ccode\u003ef1b7301\u003c/code\u003e\u003c/a\u003e Fixed stderr writes in a worker subprocess causing a deadlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/212be93c2cf2c841e753e95e5e2c543ee7feca90\"\u003e\u003ccode\u003e212be93\u003c/code\u003e\u003c/a\u003e Fix flaky test_tcp_listener_same_port using a hardcoded port (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1206\"\u003e#1206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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/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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\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/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.26.0 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.2\u003c/h2\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.1\u003c/h2\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\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/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.0 (21st February, 2024)\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/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.26.0...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003ev3.18\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.17\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.16\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/03a9a11dd8aecd4fea742cabe20f4d3d9ed82abb\"\u003e\u003ccode\u003e03a9a11\u003c/code\u003e\u003c/a\u003e Release 3.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2d2a7ef0c59210a48407b3dde6d884933cecf093\"\u003e\u003ccode\u003e2d2a7ef\u003c/code\u003e\u003c/a\u003e Pre-release 3.19rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5cce1308d148019c5fa0febceafa13e99cdacfe7\"\u003e\u003ccode\u003e5cce130\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/268\"\u003e#268\u003c/a\u003e from kjd/fix-std3-regex-alert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/3914b75f3e4cbc11e59f92eeecdb16d10871e57f\"\u003e\u003ccode\u003e3914b75\u003c/code\u003e\u003c/a\u003e Split the STD3 disallowed-character range so uppercase is explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ce9fd98ac4073866db276e93834b259f2a5a4ac4\"\u003e\u003ccode\u003ece9fd98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/267\"\u003e#267\u003c/a\u003e from kjd/housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/809240c3cc9358c9c9c79b2d12ffe39e75ccfb0f\"\u003e\u003ccode\u003e809240c\u003c/code\u003e\u003c/a\u003e Fail CI when the license copyright year is behind the current year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d9e16c523d7d25dcc14100fa80f3e303404e09be\"\u003e\u003ccode\u003ed9e16c5\u003c/code\u003e\u003c/a\u003e Consolidate test fixtures, prune stale gitignore entries, and fix doc typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ef30feeed3a758e96286fdab0315a551f7f5e7d6\"\u003e\u003ccode\u003eef30fee\u003c/code\u003e\u003c/a\u003e Remove dead code and pare back superfluous comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b907913f854d26cc714f721c6c2cb626d41ac468\"\u003e\u003ccode\u003eb907913\u003c/code\u003e\u003c/a\u003e Tighten the version support and Unicode notes in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6204cbe343ef438df7c58bc80b94d0f960991d90\"\u003e\u003ccode\u003e6204cbe\u003c/code\u003e\u003c/a\u003e Ignore local build artifacts and stop packaging stray tooling config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.2.1 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/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.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\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/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://red...\n\n_Description has been truncated_","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/517","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/517","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/517/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-05T10:58:03.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5357446004","node_id":"PR_kwDOT0P7pc8AAAABCUDDgA","number":35,"state":"closed","title":"Bump the python-dependencies group across 1 directory with 51 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-06T11:02:12.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-05T10:58:03.000Z","updated_at":"2026-09-06T11:02:14.000Z","time_to_close":86649,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-dependencies","update_count":51,"packages":[{"name":"aiohttp","old_version":"3.10.9","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"cachetools","old_version":"7.1.7","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"charset-normalizer","old_version":"3.5.0","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"clang-format","old_version":"22.1.8","new_version":"23.1.0","repository_url":"https://github.com/ssciwr/clang-format-wheel"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cython","old_version":"3.2.9","new_version":"3.3.0","repository_url":"https://github.com/cython/cython"},{"name":"dask","old_version":"2026.7.1","new_version":"2026.8.0","repository_url":"https://github.com/dask/dask"},{"name":"django-allauth","old_version":"65.19.0","new_version":"65.19.2","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-debug-toolbar","old_version":"7.1.0","new_version":"8.0.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-guardian","old_version":"3.3.3","new_version":"3.4.0","repository_url":"https://github.com/django-guardian/django-guardian"},{"name":"faker","old_version":"40.36.0","new_version":"40.38.0","repository_url":"https://github.com/joke2k/faker"},{"name":"filelock","old_version":"3.32.2","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flit-core","old_version":"3.12.0","new_version":"4.0.2","repository_url":"https://github.com/pypa/flit"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"gitpython","old_version":"3.1.59","new_version":"3.1.61","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"googleapis-common-protos","old_version":"1.75.1","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.83.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.83.0","new_version":"1.83.1"},{"name":"hypothesis","old_version":"6.165.5","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"9.0.0","new_version":"9.0.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"linkify-it-py","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/tsutsu3/linkify-it-py"},{"name":"ml-dtypes","old_version":"0.5.4","new_version":"0.6.0","repository_url":"https://github.com/jax-ml/ml_dtypes"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"newrelic","old_version":"13.4.0","new_version":"13.5.0","repository_url":"https://github.com/newrelic/newrelic-python-agent"},{"name":"optree","old_version":"0.19.1","new_version":"0.20.0","repository_url":"https://github.com/metaopt/optree"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"platformdirs","old_version":"4.11.2","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"plotly","old_version":"6.9.0","new_version":"7.0.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"polars","old_version":"1.43.2","new_version":"1.44.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"prek","old_version":"0.4.13","new_version":"0.5.1","repository_url":"https://github.com/j178/prek"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pygtrie","old_version":"2.5.0","new_version":"2.6.1","repository_url":"https://github.com/mina86/pygtrie"},{"name":"pytest-benchmark","old_version":"5.2.3","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"pyzmq","old_version":"27.1.0","new_version":"27.2.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"ruff","old_version":"0.16.2","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"sqlalchemy","old_version":"1.3.18","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"svcs","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/hynek/svcs"},{"name":"sympy","old_version":"1.13.1","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"trio","old_version":"0.33.0","new_version":"0.34.0","repository_url":"https://github.com/python-trio/trio"},{"name":"typer","old_version":"0.27.1","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"zope-hookable","old_version":"8.2","new_version":"8.3","repository_url":"https://github.com/zopefoundation/zope.hookable"},{"name":"zope-i18nmessageid","old_version":"8.2","new_version":"8.3","repository_url":"https://github.com/zopefoundation/zope.i18nmessageid"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 51 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.10.9` | `3.14.3` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.7` | `7.1.8` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.5.0` | `3.5.1` |\n| [clang-format](https://github.com/ssciwr/clang-format-wheel) | `22.1.8` | `23.1.0` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cython](https://github.com/cython/cython) | `3.2.9` | `3.3.0` |\n| [dask](https://github.com/dask/dask) | `2026.7.1` | `2026.8.0` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.19.0` | `65.19.2` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.1.0` | `8.0.0` |\n| [django-guardian](https://github.com/django-guardian/django-guardian) | `3.3.3` | `3.4.0` |\n| [faker](https://github.com/joke2k/faker) | `40.36.0` | `40.38.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.32.2` | `3.32.5` |\n| [flit-core](https://github.com/pypa/flit) | `3.12.0` | `4.0.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.64.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.59` | `3.1.61` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.75.1` | `1.75.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.83.0` | `1.83.1` |\n| [grpcio-status](https://grpc.io) | `1.83.0` | `1.83.1` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.165.5` | `6.167.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `9.0.0` | `9.0.1` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [linkify-it-py](https://github.com/tsutsu3/linkify-it-py) | `2.1.0` | `2.2.0` |\n| [ml-dtypes](https://github.com/jax-ml/ml_dtypes) | `0.5.4` | `0.6.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n| [newrelic](https://github.com/newrelic/newrelic-python-agent) | `13.4.0` | `13.5.0` |\n| [optree](https://github.com/metaopt/optree) | `0.19.1` | `0.20.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.11.2` | `4.11.7` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.9.0` | `7.0.0` |\n| [polars](https://github.com/pola-rs/polars) | `1.43.2` | `1.44.1` |\n| [prek](https://github.com/j178/prek) | `0.4.13` | `0.5.1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pygtrie](https://github.com/mina86/pygtrie) | `2.5.0` | `2.6.1` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.2.3` | `5.3.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.1.0` | `27.2.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.2` | `0.16.5` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `1.3.18` | `2.0.52` |\n| [svcs](https://github.com/hynek/svcs) | `26.1.0` | `26.2.0` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.1` | `1.14.0` |\n| [trio](https://github.com/python-trio/trio) | `0.33.0` | `0.34.0` |\n| [typer](https://github.com/fastapi/typer) | `0.27.1` | `0.27.2` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [zope-hookable](https://github.com/zopefoundation/zope.hookable) | `8.2` | `8.3` |\n| [zope-i18nmessageid](https://github.com/zopefoundation/zope.i18nmessageid) | `8.2` | `8.3` |\n\n\nUpdates `aiohttp` from 3.10.9 to 3.14.3\nUpdates `cachetools` from 7.1.7 to 7.1.8\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.1.8 (2026-08-31)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eReject negative \u003ccode\u003emaxsize\u003c/code\u003e in \u003ccode\u003eCache.__init__\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/tkem/cachetools/commit/4500e3d04288738d25acbb4973eb3c3e1bf41db9\"\u003e\u003ccode\u003e4500e3d\u003c/code\u003e\u003c/a\u003e Release v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/6e49bef559f20995d603830202afda0ea890bd1a\"\u003e\u003ccode\u003e6e49bef\u003c/code\u003e\u003c/a\u003e Update copilot instructions and review.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/defc58b02543ca0189fb37505827db4cc4e0565c\"\u003e\u003ccode\u003edefc58b\u003c/code\u003e\u003c/a\u003e Prepare v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/a39180bfced6e162614e23eaa9c3dc79d8ec74d6\"\u003e\u003ccode\u003ea39180b\u003c/code\u003e\u003c/a\u003e Remove somewhat superfluous and slightly incorrect documentation note regardi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/dd181c5a72a74fcc01045c17cc943f72cb521262\"\u003e\u003ccode\u003edd181c5\u003c/code\u003e\u003c/a\u003e Reject negative maxsize in Cache.\u003cstrong\u003einit\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b43b95360fd4a99f3bdd19ff87c2ef6f4c99e3d8\"\u003e\u003ccode\u003eb43b953\u003c/code\u003e\u003c/a\u003e Use monthly batches for dependabot updates.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tkem/cachetools/compare/v7.1.7...v7.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.5.0 to 3.5.1\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.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\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.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\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/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.5.0...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `clang-format` from 22.1.8 to 23.1.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/b6a4827bc70fc81deb4b9e9c5f80dee047047f9c\"\u003e\u003ccode\u003eb6a4827\u003c/code\u003e\u003c/a\u003e Bump to v23.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/030534e36413c0cdb9a21b465cf76bb5f5de0dda\"\u003e\u003ccode\u003e030534e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ssciwr/clang-format-wheel/issues/164\"\u003e#164\u003c/a\u003e from ssciwr/dependabot/github_actions/actions/setup-p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/183480f8d9b7398853951cca1066da6e35cb902b\"\u003e\u003ccode\u003e183480f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ssciwr/clang-format-wheel/issues/163\"\u003e#163\u003c/a\u003e from ssciwr/dependabot/github_actions/pypa/gh-action-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/b179c1d24943dda7eff1db1d894155618caab0fb\"\u003e\u003ccode\u003eb179c1d\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ssciwr/clang-format-wheel/commit/5c3c2fe4ea46f0e64bf81242044c53327567df06\"\u003e\u003ccode\u003e5c3c2fe\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ssciwr/clang-format-wheel/compare/v22.1.8...v23.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.4.2 to 8.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\u003c/code\u003e,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.4.2...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cython` from 3.2.9 to 3.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cython/cython/blob/master/CHANGES.rst\"\u003ecython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.3.0 (2026-08-22)\u003c/h1\u003e\n\u003cp\u003e(Complete changelog for the 3.3.0 release, including pre-releases.)\u003c/p\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePEP-634 Pattern Matching is implemented.\n(Github issue :issue:\u003ccode\u003e4029\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eexcept *\u003c/code\u003e (PEP-654 exception groups) is implemented for Python 3.11 and later.\n(Github issue :issue:\u003ccode\u003e4993\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnpacking in comprehensions (PEP-798) is implemented for list/set/dict comprehensions.\nIt is not yet available for generator expressions.\nOriginal patch by Morax.  (Github issue :issue:\u003ccode\u003e7898\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanges were made to adapt to Python 3.15 and its Limited API.\nThis does not yet cover \u003ccode\u003eabi3t\u003c/code\u003e.\n(Github issues :issue:\u003ccode\u003e6405\u003c/code\u003e, :issue:\u003ccode\u003e7190\u003c/code\u003e, :issue:\u003ccode\u003e7347\u003c/code\u003e, :issue:\u003ccode\u003e7348\u003c/code\u003e, :issue:\u003ccode\u003e7358\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCython now uses a new export/import naming scheme for fused C functions that\nincreases the resilience against seemingly compatible user code changes.\nThe original names are kept for backwards compatibility.\n(Github issue :issue:\u003ccode\u003e7656\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeclared container item types (e.g. \u003ccode\u003elist[float]\u003c/code\u003e or \u003ccode\u003etuple[atype, ...]\u003c/code\u003e)\nare now used by the type system.\n(Github issues :issue:\u003ccode\u003e7288\u003c/code\u003e, :issue:\u003ccode\u003e7798\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eType inference was improved for builtin Python types and their methods.\n(Github issues :issue:\u003ccode\u003e7536\u003c/code\u003e, :issue:\u003ccode\u003e7644\u003c/code\u003e, :issue:\u003ccode\u003e7887\u003c/code\u003e, :issue:\u003ccode\u003e7888\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eException base types are inferred for the target variable of multi-exception \u003ccode\u003eexcept\u003c/code\u003e\nclauses and for collections of exceptions.  Properties like \u003ccode\u003e.args\u003c/code\u003e and \u003ccode\u003e.context\u003c/code\u003e\nuse direct C access in CPython.\n(Github issue :issue:\u003ccode\u003e7783\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAnnotations on global variables are now used by type inference.\n(Github issue :issue:\u003ccode\u003e7877\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe feature set of the shared module can be selected at build time\nby listing named features to include or exclude.\nThis is an experimental configuration, subject to further improvements.\nFailures to include used features will currently result in import failures.\n(Github issue :issue:\u003ccode\u003e7759\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTo control the generation of the shared module, the \u003ccode\u003ecython\u003c/code\u003e command gained\na sub-command \u003ccode\u003ecython generate-shared pkg/modulename.c\u003c/code\u003e with additional options\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/cython/cython/commit/bcd04a2966842d80de6ecff4e68e8d892bec5ef7\"\u003e\u003ccode\u003ebcd04a2\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/dd3ab0af8ed2f9f628016aaaa7a23023658a2abc\"\u003e\u003ccode\u003edd3ab0a\u003c/code\u003e\u003c/a\u003e Prepare release of 3.3.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/294caa8693e2ddba4ef05058591a5a0a971c47cb\"\u003e\u003ccode\u003e294caa8\u003c/code\u003e\u003c/a\u003e Fix use of PyState_RemoveModule on module init failure path (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7906\"\u003e#7906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/a5d566ab4590c60d1c01d21c4816bbdaa4f21157\"\u003e\u003ccode\u003ea5d566a\u003c/code\u003e\u003c/a\u003e Build: Validate that all expected wheels were built.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/2dd996dc39a541b8bedbfa839913b5b946ad3be6\"\u003e\u003ccode\u003e2dd996d\u003c/code\u003e\u003c/a\u003e Build: Upgrade cibuildwheel.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/1b9e5ec4c800bae3ebbabcbc8013b22388a084e2\"\u003e\u003ccode\u003e1b9e5ec\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/148e945add05ee905172523ad3ccac93fc14fcc7\"\u003e\u003ccode\u003e148e945\u003c/code\u003e\u003c/a\u003e Avoid useless None checks in PyTypeTestNode. (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7904\"\u003eGH-7904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/82e43017f06644589ae1ae71fcf0693de5022308\"\u003e\u003ccode\u003e82e4301\u003c/code\u003e\u003c/a\u003e Fix type checks for exception base types. (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7903\"\u003e#7903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/207f4a96772228a7fe95689ed12239d6dae2bf41\"\u003e\u003ccode\u003e207f4a9\u003c/code\u003e\u003c/a\u003e Allow pipes in srctree tests (\u003ca href=\"https://redirect.github.com/cython/cython/issues/7901\"\u003eGH-7901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cython/cython/commit/ef74612a84263f17ae2fa4624db920faf1059c9c\"\u003e\u003ccode\u003eef74612\u003c/code\u003e\u003c/a\u003e Update version for next release.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cython/cython/compare/3.2.9...3.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dask` from 2026.7.1 to 2026.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dask/dask/releases\"\u003edask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2026.8.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix duplicated-word typos in docstrings \u003ca href=\"https://github.com/Sreekant13\"\u003e\u003ccode\u003e@​Sreekant13\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump scientific-python/issue-from-pytest-log-action from 1.6.0 to 1.6.1 @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12524\"\u003e#12524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: fix broken cross-references in expr-system docs \u003ca href=\"https://github.com/ritsth\"\u003e\u003ccode\u003e@​ritsth\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12494\"\u003e#12494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuppress Pandas4Warning in nightly CI caused by PyArrow \u003ca href=\"https://github.com/crusaderky\"\u003e\u003ccode\u003e@​crusaderky\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12498\"\u003e#12498\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pixi compatibility with upstream distributed \u003ca href=\"https://github.com/crusaderky\"\u003e\u003ccode\u003e@​crusaderky\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12497\"\u003e#12497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate guidance on AI-assisted PRs \u003ca href=\"https://github.com/crusaderky\"\u003e\u003ccode\u003e@​crusaderky\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12496\"\u003e#12496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump scientific-python/issue-from-pytest-log-action from 1.5.0 to 1.6.0 @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12490\"\u003e#12490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 8.2.0 to 8.3.0 @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12491\"\u003e#12491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee the \u003ca href=\"https://docs.dask.org/en/stable/changelog.html\"\u003eChangelog\u003c/a\u003e for more information.\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/dask/dask/commit/9dc535daa30d7d36d63d4a003b54342fbc7032db\"\u003e\u003ccode\u003e9dc535d\u003c/code\u003e\u003c/a\u003e Version 2026.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/817e5ffc1208346630b111860571024b0c6ec9bd\"\u003e\u003ccode\u003e817e5ff\u003c/code\u003e\u003c/a\u003e docs: fix duplicated-word typos in docstrings (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12516\"\u003e#12516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/ba5045e001d67decd6a83a0f50f666a5e3845250\"\u003e\u003ccode\u003eba5045e\u003c/code\u003e\u003c/a\u003e Bump scientific-python/issue-from-pytest-log-action from 1.6.0 to 1.6.1 (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12524\"\u003e#12524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/a54329156cd17a68ef081c83fdc2409ddb423426\"\u003e\u003ccode\u003ea543291\u003c/code\u003e\u003c/a\u003e docs: fix broken cross-references in expr-system docs (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12494\"\u003e#12494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/aac2ce21714d556d748951814622a8ea76f5a042\"\u003e\u003ccode\u003eaac2ce2\u003c/code\u003e\u003c/a\u003e Suppress Pandas4Warning in nightly CI caused by PyArrow (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12498\"\u003e#12498\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/fc8e30b97ec64932da96d8f482086e969c6feb71\"\u003e\u003ccode\u003efc8e30b\u003c/code\u003e\u003c/a\u003e Fix pixi compatibility with upstream distributed (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12497\"\u003e#12497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/b3e7ee14d93c0a75da846b9a04213eafc4040579\"\u003e\u003ccode\u003eb3e7ee1\u003c/code\u003e\u003c/a\u003e Update guidance on AI-assisted PRs (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12496\"\u003e#12496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/f42727f79859452d3c9c89a37b409024b58b61cd\"\u003e\u003ccode\u003ef42727f\u003c/code\u003e\u003c/a\u003e Bump scientific-python/issue-from-pytest-log-action from 1.5.0 to 1.6.0 (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12490\"\u003e#12490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dask/dask/commit/416e177459a78a9bcc1d20f8d21a6bb8d6e28327\"\u003e\u003ccode\u003e416e177\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 8.2.0 to 8.3.0 (\u003ca href=\"https://redirect.github.com/dask/dask/issues/12491\"\u003e#12491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dask/dask/compare/2026.7.1...2026.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth` from 65.19.0 to 65.19.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.1.0 to 8.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles) and Geist (body text) fonts, an updated color palette, and per-panel navigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of \u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other \u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border accent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's logo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable scroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles, an \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in both themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the shadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's time, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one in its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked before the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was missing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the design interface of the toolbar by \u003ca href=\"https://github.com/VeldaKiara\"\u003e\u003ccode\u003e@​VeldaKiara\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2429\"\u003edjango-commons/django-debug-toolbar#2429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated example screenshot of the toolbar with the new design. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2446\"\u003edjango-commons/django-debug-toolbar#2446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typos in apps.py docstrings by \u003ca href=\"https://github.com/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTrack and display middleware time in the toolbar by \u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cache hit/miss reporting for \u003ccode\u003ecache.get()\u003c/code\u003e by \u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSquare the toolbar handle corners facing the viewport edge by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2460\"\u003edjango-commons/django-debug-toolbar#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow a single Refresh button in the History panel by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2459\"\u003edjango-commons/django-debug-toolbar#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument and test the USE_SHADOW_DOM setting by \u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\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/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.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/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0 (2026-09-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles)\nand Geist (body text) fonts, an updated color palette, and per-panel\nnavigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of\n\u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other\n\u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border\naccent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's\nlogo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable\nscroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles,\nan \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in\nboth themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the\nshadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's\ntime, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one\nin its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked\nbefore the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was\nmissing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\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/django-commons/django-debug-toolbar/commit/85b98c6a93e1ff906f07545e98d8e4085424d005\"\u003e\u003ccode\u003e85b98c6\u003c/code\u003e\u003c/a\u003e Version 8.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/8fb3fe874881b46e6490e60f78f47f2ef4bc13ec\"\u003e\u003ccode\u003e8fb3fe8\u003c/code\u003e\u003c/a\u003e Document and test the USE_SHADOW_DOM setting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3f748fc093684496d53561dacb0a98b4b0345873\"\u003e\u003ccode\u003e3f748fc\u003c/code\u003e\u003c/a\u003e Show a single Refresh button in the History panel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/19fce30bfeb2b1cb77515df9bc47549f2607d3c7\"\u003e\u003ccode\u003e19fce30\u003c/code\u003e\u003c/a\u003e Square the toolbar handle corners facing the viewport edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ff94889178bc247a79093375b12ea68ab509ac1b\"\u003e\u003ccode\u003eff94889\u003c/code\u003e\u003c/a\u003e Bump the minor-npm-dependencies group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/65f68543551f6747cc6e38977d7a0082a63287e9\"\u003e\u003ccode\u003e65f6854\u003c/code\u003e\u003c/a\u003e Bump py-cov-action/python-coverage-comment-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/c7dc154a68077273718d1b2751bc6a6f15c7e20a\"\u003e\u003ccode\u003ec7dc154\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/93e89b132420db582ef0465c8508a744b9bc05b7\"\u003e\u003ccode\u003e93e89b1\u003c/code\u003e\u003c/a\u003e Fix CI with spelling words and biome schema version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ecf3e1e7745993da27546c639d0652ff69a25791\"\u003e\u003ccode\u003eecf3e1e\u003c/code\u003e\u003c/a\u003e Make the cache discussion link open in a new tab.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/28996cc6050f55b0a57394ca954e1163030998f4\"\u003e\u003ccode\u003e28996cc\u003c/code\u003e\u003c/a\u003e Improve cache hit/miss reporting for cache.get()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...8.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-guardian` from 3.3.3 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-guardian/django-guardian/releases\"\u003edjango-guardian's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the github-actions 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/django-guardian/django-guardian/pull/1013\"\u003edjango-guardian/django-guardian#1013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix queryset filtering with annotations in get_objects_for_user by \u003ca href=\"https://github.com/Mohan17881\"\u003e\u003ccode\u003e@​Mohan17881\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1014\"\u003edjango-guardian/django-guardian#1014\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1012\"\u003edjango-guardian/django-guardian#1012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1015\"\u003edjango-guardian/django-guardian#1015\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/Mohan17881\"\u003e\u003ccode\u003e@​Mohan17881\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1014\"\u003edjango-guardian/django-guardian#1014\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.4...3.4.0\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.4...3.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.3.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the github-actions 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/django-guardian/django-guardian/pull/1007\"\u003edjango-guardian/django-guardian#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocumentation is refactored, ai rules are added by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/986\"\u003edjango-guardian/django-guardian#986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to 3.3.4 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/1011\"\u003edjango-guardian/django-guardian#1011\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.3...3.3.4\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.3...3.3.4\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/django-guardian/django-guardian/commit/bd0882169ee3df6a31d5718b3f848e7470694287\"\u003e\u003ccode\u003ebd08821\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1015\"\u003e#1015\u003c/a\u003e from django-guardian/version-update-3-4-0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/651d4a5359b12660debfbc47ef4735476743c880\"\u003e\u003ccode\u003e651d4a5\u003c/code\u003e\u003c/a\u003e Bump version to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/64f399087cd9d0b75a521e16df78efb63c50aa65\"\u003e\u003ccode\u003e64f3990\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1012\"\u003e#1012\u003c/a\u003e from django-guardian/987-missing-support-for-django-60\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/dff5a2df2b18f814c7747db9cff5d899ff0bfbfe\"\u003e\u003ccode\u003edff5a2d\u003c/code\u003e\u003c/a\u003e Fix ContentType.model overflow in orphan permission tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/d985175f9f592a906c00aac0c8296cd1718652ac\"\u003e\u003ccode\u003ed985175\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into 987-missing-support-for-django-60\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/a904b4b2e9bdb23a0d890fbf56b99d7d2bb32fb0\"\u003e\u003ccode\u003ea904b4b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1014\"\u003e#1014\u003c/a\u003e from Mohan17881/fix/992-queryset-annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/1d8af5bd56e29427d699e0c2c13a07feab271df5\"\u003e\u003ccode\u003e1d8af5b\u003c/code\u003e\u003c/a\u003e Apply pre-commit formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/20b6adab6f507d4a50d26b65835ce0c80d907d1a\"\u003e\u003ccode\u003e20b6ada\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix/992-queryset-annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/42d1031c46d7905e139c4e88495006eb5585e42b\"\u003e\u003ccode\u003e42d1031\u003c/code\u003e\u003c/a\u003e Fix queryset filtering with annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/b621d4e65965e8060aa12777918ac7f2527f4a29\"\u003e\u003ccode\u003eb621d4e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/1013\"\u003e#1013\u003c/a\u003e from django-guardian/dependabot/github_actions/githu...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.3...3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.36.0 to 40.38.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.38.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.38.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.37.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.37.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.37.0...v40.38.0\"\u003ev40.38.0 - 2026-09-01\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esi_LK\u003c/code\u003e (Sinhala, Sri Lanka) person provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2430\"\u003e#2430\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RavinduPabasara\"\u003e\u003ccode\u003e@​RavinduPabasara\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.36.0...v40.37.0\"\u003ev40.37.0 - 2026-08-20\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: generate structurally valid Irish IBANs for \u003ccode\u003een_IE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2411\"\u003e#2411\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/CedricConday\"\u003e\u003ccode\u003e@​CedricConday\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd Pillow as an optional dependency (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2442\"\u003e#2442\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/suliuzh\"\u003e\u003ccode\u003e@​suliuzh\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/joke2k/faker/commit/59a6872a547248bb40cdd0f809089a605c68467f\"\u003e\u003ccode\u003e59a6872\u003c/code\u003e\u003c/a\u003e Bump version: 40.37.0 → 40.38.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2407c71270aa0fc1b3e7510e1872dc2d232dc238\"\u003e\u003ccode\u003e2407c71\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f6a8427a6481f81d1d45701338acde38c63e75ad\"\u003e\u003ccode\u003ef6a8427\u003c/code\u003e\u003c/a\u003e :lipstick: Format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ce50bdef4bdc5f04e25d012566b14faf5fb2ec22\"\u003e\u003ccode\u003ece50bde\u003c/code\u003e\u003c/a\u003e Add step to check for existing issues or PRs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4ca9116ec2f9c86bc311aadd0110d3f976bb49a8\"\u003e\u003ccode\u003e4ca9116\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003esi_LK\u003c/code\u003e (Sinhala, Sri Lanka) person provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2430\"\u003e#2430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c5a00935f1eff78bf0258c8a45fb431747c46b48\"\u003e\u003ccode\u003ec5a0093\u003c/code\u003e\u003c/a\u003e mention pull request template in contributing doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4a464c8d7130e26b4c0e9749b039d10b5614c45e\"\u003e\u003ccode\u003e4a464c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.36.0 → 40.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f33e820a5237384c43718f2ec0bf60d82014db12\"\u003e\u003ccode\u003ef33e820\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/74efb07c529e826c3aa12508b204b80b180eba1f\"\u003e\u003ccode\u003e74efb07\u003c/code\u003e\u003c/a\u003e fix(en_IE): generate structurally valid Irish IBANs (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2411\"\u003e#2411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/d80d125d5c20d0572a26d5d617dbad647beb9343\"\u003e\u003ccode\u003ed80d125\u003c/code\u003e\u003c/a\u003e add Pillow as an optional dependency (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.36.0...v40.38.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.32.2 to 3.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.32.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(fork): report where a stalled fork stops by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/715\"\u003etox-dev/filelock#715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs: say that mode is read-only in the thread-local section by \u003ca href=\"https://github.com/Gares95\"\u003e\u003ccode\u003e@​Gares95\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/716\"\u003etox-dev/filelock#716\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(lease): clear token after failed acquire by \u003ca href=\"https://github.com/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\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/lprnmns\"\u003e\u003ccode\u003e@​lprnmns\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/721\"\u003etox-dev/filelock#721\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.4...3.32.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix: retry transient denials on open and claim read by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/705\"\u003etox-dev/filelock#705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: deflake six scheduled-run failures by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/704\"\u003etox-dev/filelock#704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test: cover a reclaimed private record for real by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/706\"\u003etox-dev/filelock#706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(fork): fork once the event loop has closed by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/714\"\u003etox-dev/filelock#714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 chore: batch dependency updates weekly on Tuesday by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/713\"\u003etox-dev/filelock#713\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eescape the hostname every marker publishes by \u003ca href=\"https://github.com/dxbjavid\"\u003e\u003ccode\u003e@​dxbjavid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/709\"\u003etox-dev/filelock#709\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.3...3.32.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.32.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(strict): deflake close-fault injections on graalpy by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/697\"\u003etox-dev/filelock#697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📄 docs: publish llms.txt from the docs build by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/700\"\u003etox-dev/filelock#700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(fork): survive audit events during interpreter shutdown by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/703\"\u003etox-dev/filelock#703\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.32.2...3.32.3\"\u003ehttps://github.com/tox-dev/filelock/compare/3.32.2...3.32.3\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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003cp\u003e.. towncrier-draft-entries:: Unreleased\u003c/p\u003e\n\u003cp\u003e.. towncrier release notes start\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.5 (2026-08-31)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSoftFileLease.token\u003c/code\u003e and \u003ccode\u003eAsyncSoftFileLease.token\u003c/code\u003e now read \u003ccode\u003eNone\u003c/code\u003e after a failed acquisition, so a contender\nturned away by a live holder no longer reports a token for a claim it never published. :pr:\u003ccode\u003e721\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocument that \u003ccode\u003emode\u003c/code\u003e has no setter: unlike \u003ccode\u003epoll_interval\u003c/code\u003e, \u003ccode\u003etimeout\u003c/code\u003e, \u003ccode\u003eblocking\u003c/code\u003e and \u003ccode\u003elifetime\u003c/code\u003e, it is fixed at construction and \u003ccode\u003elock.mode = ...\u003c/code\u003e raises \u003ccode\u003eAttributeError\u003c/code\u003e. :pr:\u003ccode\u003e716\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.4 (2026-08-23)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eStrictSoftFileLock\u003c/code\u003e always retries a claim read whose first attempt reports the claim as pending, so a first read\nthat itself outlasts the retry grace no longer fails closed on a claim it could have read. :pr:\u003ccode\u003e705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWindowsFileLock\u003c/code\u003e waits out a transient \u003ccode\u003eSTATUS_ACCESS_DENIED\u003c/code\u003e from \u003ccode\u003eNtCreateFile\u003c/code\u003e for up to half a second\nbefore raising \u003ccode\u003ePermissionError\u003c/code\u003e, since a peer unlinking the lock file as it releases can answer that for a moment; a\nreal denial still fails fast. :pr:\u003ccode\u003e705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEvery lock class now escapes the hostname it publishes, so a host whose \u003ccode\u003esocket.gethostname()\u003c/code\u003e carries a space, a\nnewline or a byte outside UTF-8 no longer writes a marker it reads back as malformed. Such a host used to lose a held\n\u003ccode\u003eSoftReadWriteLock\u003c/code\u003e read slot to a peer and could not take a write slot or a \u003ccode\u003eStrictSoftFileLock\u003c/code\u003e at all. :pr:\u003ccode\u003e709\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.3 (2026-08-13)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eThe fork-safety audit hook no longer prints \u003ccode\u003eException ignored in audit hook\u003c/code\u003e with a \u003ccode\u003eTypeError\u003c/code\u003e when an audit\nevent fires during interpreter shutdown, after CPython has already cleared the module globals. :pr:\u003ccode\u003e701\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.2 (2026-07-29)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eA \u003ccode\u003eSoftReadWriteLock\u003c/code\u003e or \u003ccode\u003eSoftFileLease\u003c/code\u003e acquire whose heartbeat thread fails to start now unlinks its marker and\nhands the claim back, instead of leaving an unrefreshed marker a peer takes while the caller believes it still holds\nthe lock. :pr:\u003ccode\u003e691\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.32.1 (2026-07-26)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eCanceling an \u003ccode\u003eAsyncSoftReadWriteLock\u003c/code\u003e acquire now releases the claim instead of leaking a marker whose heartbeat\nwedges every contender. :pr:\u003ccode\u003e686\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/tox-dev/filelock/commit/1585dfef9355a5c77d4a9498cc34d3a98056fdb9\"\u003e\u003ccode\u003e1585dfe\u003c/code\u003e\u003c/a\u003e Release 3.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/00177c32686e60bc5ef9875b5841867ea08d4558\"\u003e\u003ccode\u003e00177c3\u003c/code\u003e\u003c/a\u003e 🐛 fix(lease): clear token after failed acquire (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/721\"\u003e#721\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/5aeb9b6a5fe1e86dcb1c44a927aefffd607b17b0\"\u003e\u003ccode\u003e5aeb9b6\u003c/code\u003e\u003c/a\u003e 📝 docs: say that mode is read-only in the thread-local section (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2634dd1dcc597b319770df027491f16d07662952\"\u003e\u003ccode\u003e2634dd1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/37dccf0276f6db1520db9e3482fdf0446c14276e\"\u003e\u003ccode\u003e37dccf0\u003c/code\u003e\u003c/a\u003e 🧪 test(fork): report where a stalled fork stops (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/715\"\u003e#715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/cb493d6684ed5d2f923384633c86fef12e29bce2\"\u003e\u003ccode\u003ecb493d6\u003c/code\u003e\u003c/a\u003e Release 3.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fe07a11a7133ddd104322eb79d3c59f966b4ba15\"\u003e\u003ccode\u003efe07a11\u003c/code\u003e\u003c/a\u003e escape the hostname every marker publishes (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/709\"\u003e#709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/232732f49ed9d230802f527ad60b5d5ad1202a56\"\u003e\u003ccode\u003e232732f\u003c/code\u003e\u003c/a\u003e 🔧 chore: batch dependency updates weekly on Tuesday (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/713\"\u003e#713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2966eb51431ff8ac19eb2bec4e0b67c328437c48\"\u003e\u003ccode\u003e2966eb5\u003c/code\u003e\u003c/a\u003e 🧪 test(fork): fork once the event loop has closed (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/714\"\u003e#714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/61511ebc1cc5d40b28f8584f1078e63f2d63fb02\"\u003e\u003ccode\u003e61511eb\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.32.2...3.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flit-core` from 3.12.0 to 4.0.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/flit/blob/main/doc/history.rst\"\u003eflit-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.0.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix invalid metadata files with \u003ccode\u003eImport-Name\u003c/code\u003e (:ghissue:\u003ccode\u003e813\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 4.0.1\u003c/h2\u003e\n\u003cp\u003eNo changes, but a new tag to trigger an upload to PyPI now that twine will\naccept it.\u003c/p\u003e\n\u003ch2\u003eVersion 4.0\u003c/h2\u003e\n\u003cp\u003eThis version contains breaking changes, but most projects which are already\nusing the \u003ccode\u003e[project]\u003c/code\u003e table for metadata shouldn't be affected, and can simply\nchange the \u003ccode\u003eflit_core \u0026lt;4\u003c/code\u003e constraint to \u003ccode\u003e\u0026lt;5\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e[tool.flit.metadata]\u003c/code\u003e table is no longer used for project metadata\n(:ghpull:\u003ccode\u003e771\u003c/code\u003e). Use the newer :ref:\u003ccode\u003e[project] table \u0026lt;pyproject_toml_project\u0026gt;\u003c/code\u003e\ninstead (or if that is not possible, build with \u003ccode\u003eflit_core \u0026lt;4\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e:ref:\u003ccode\u003ebuild_cmd\u003c/code\u003e and :ref:\u003ccode\u003epublish_cmd\u003c/code\u003e no longer include files in the sdist\nbased on what is committed in git or Mercurial (:ghpull:\u003ccode\u003e772\u003c/code\u003e). These commands\nnow build packages more like Flit does when called as a backend by e.g.\n\u003ccode\u003epython -m build\u003c/code\u003e. Specify :ref:\u003ccode\u003esdist include \u0026amp; exclude patterns \u0026lt;pyproject_toml_sdist\u0026gt;\u003c/code\u003e instead (Flit can help to generate these), or pass\nthe \u003ccode\u003e--use-vcs\u003c/code\u003e option to get the old behaviour back.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflit_core\u003c/code\u003e now requires Python 3.8 or above (:ghpull:\u003ccode\u003e738\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003e--setup-py\u003c/code\u003e option to generate sdists containing a \u003ccode\u003esetup.py\u003c/code\u003e file\nis no longer available (:ghpull:\u003ccode\u003e776\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eMaking typing stubs packages with a \u003ccode\u003e-stubs\u003c/code\u003e suffix will now work\n(:ghpull:\u003ccode\u003e742\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe default glob patterns for license files have been extended to include\n\u003ccode\u003eNOTICE*\u003c/code\u003e and \u003ccode\u003eAUTHORS*\u003c/code\u003e (:ghpull:\u003ccode\u003e758\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elicense-files\u003c/code\u003e glob patterns can contain spaces (:ghpull:\u003ccode\u003e797\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix a bug where license files could be found twice on Windows (:ghpull:\u003ccode\u003e752\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe new \u003ccode\u003eImport-Name\u003c/code\u003e and \u003ccode\u003eImport-Namespace\u003c/code\u003e metadata fields (metadata 2.5)\nare now supported (:ghpull:\u003ccode\u003e774\u003c/code\u003e). In most cases no new input is required,\nas Flit will create this metadata automatically.\u003c/li\u003e\n\u003cli\u003eFix creating RECORD files when file names include commas (:ghpull:\u003ccode\u003e744\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003e--use-vcs\u003c/code\u003e option now correctly recognises git from inside a git\nworktree folder (:ghpull:\u003ccode\u003e799\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eOn Python 3.12 and above, \u003ccode\u003eflit build\u003c/code\u003e now uses the 'data' filter when\nextracting the just-created sdist prior to building a wheel (:ghpull:\u003ccode\u003e775\u003c/code\u003e).\nThis restricts some special features of tar files, but sdists are unlikely\nto use these features, and they would probably break in other scenarios if\nyou did.\u003c/li\u003e\n\u003cli\u003eThe vendorised \u003ccode\u003ereadme_renderer\u003c/code\u003e package was updated to version 44.0\n(:ghpull:\u003ccode\u003e760\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/pypa/flit/commit/60c0b3d97bf095fbdb7671a02e51f8d8aba2fb85\"\u003e\u003ccode\u003e60c0b3d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/flit/issues/814\"\u003e#814\u003c/a\u003e from pypa/i813\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/58e7f412d19e80d69999fab964e4b714e7fe521e\"\u003e\u003ccode\u003e58e7f41\u003c/code\u003e\u003c/a\u003e Bump version: 4.0.1 → 4.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/666e3c2aa432d3d9e97a0a30dae2c675d8b12855\"\u003e\u003ccode\u003e666e3c2\u003c/code\u003e\u003c/a\u003e Fix METADATA format issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/81ac51d4b858972c6951914422906b01320ab0a1\"\u003e\u003ccode\u003e81ac51d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/flit/issues/812\"\u003e#812\u003c/a\u003e from pypa/prepare-4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/41bdff139c9e52399463c6436d4b22dae0dbf153\"\u003e\u003ccode\u003e41bdff1\u003c/code\u003e\u003c/a\u003e Add release note about 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/ff5bfad3ad132910a95949d291f9d4e6be183e7f\"\u003e\u003ccode\u003eff5bfad\u003c/code\u003e\u003c/a\u003e Bump version: 4.0.0 → 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/8faf7341c038567851be8210fa1b54915792ba07\"\u003e\u003ccode\u003e8faf734\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6 to 7 (\u003ca href=\"https://redirect.github.com/pypa/flit/issues/807\"\u003e#807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/ef7f31925305a50bd097f06b913717192490ad44\"\u003e\u003ccode\u003eef7f319\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/flit/issues/800\"\u003e#800\u003c/a\u003e from pypa/prepare-4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/431fbafe1242995b13fb2e64d5334bc6d17561be\"\u003e\u003ccode\u003e431fbaf\u003c/code\u003e\u003c/a\u003e Remind people in release notes to allow flit_core \u0026lt;5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/flit/commit/38297e7d1603654b27637dcbde0f3d72d1f26d6b\"\u003e\u003ccode\u003e38297e7\u003c/code\u003e\u003c/a\u003e Version number -\u0026gt; 4.0.0\u003c/li\u003e\n\u003cli\u003eAdditional commits vi...\n\n_Description has been truncated_","html_url":"https://github.com/Winnetou/uv_repo/pull/35","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Winnetou%2Fuv_repo/issues/35","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-04T23:39:41.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5354147888","node_id":"PR_kwDOSQ1-D88AAAABCRhy1Q","number":127,"state":"closed","title":"deps(deps): bump websocket-client from 1.9.0 to 1.9.2","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T23:42:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T23:39:41.000Z","updated_at":"2026-09-04T23:42:18.000Z","time_to_close":150,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.9.0 to 1.9.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.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=websocket-client\u0026package-manager=pip\u0026previous-version=1.9.0\u0026new-version=1.9.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/TopiTech/mistral_nex_stocks/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TopiTech%2Fmistral_nex_stocks/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-04T16:46:05.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5350736909","node_id":"PR_kwDOTiCLEM8AAAABCOyeZw","number":12,"state":"open","title":"deps: bump the python-dependencies group across 19 directories with 25 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-04T16:46:05.000Z","updated_at":"2026-09-11T16:58:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python-dependencies","update_count":25,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"azure-identity","old_version":"1.23.0","new_version":"1.25.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"ruff","old_version":"0.14.9","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.18.2","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 8 updates in the /buswatch directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.141.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.52.4` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n\nBumps the python-dependencies group with 9 updates in the /dashboard directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [azure-mgmt-appcontainers](https://github.com/Azure/azure-sdk-for-python) | `4.0.0` | `5.0.0` |\n| [azure-mgmt-servicebus](https://github.com/Azure/azure-sdk-for-python) | `9.0.0` | `10.0.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.3.0` | `26.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_chemo_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_mock_receiver directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_phw_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_pims_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 9 updates in the /hl7_server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [hishel](https://github.com/karpetrosyan/hishel) | `1.1.8` | `1.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.16` | `3.19` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_subscription_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_replay_job directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_store_service directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.1` | `1.41.0` |\n\nBumps the python-dependencies group with 2 updates in the /shared_libs directory: [xmlschema](https://github.com/sissaschool/xmlschema) and [elementpath](https://github.com/sissaschool/elementpath).\nBumps the python-dependencies group with 3 updates in the /shared_libs/event_logger_lib directory: [azure-identity](https://github.com/Azure/azure-sdk-for-python), [azure-core](https://github.com/Azure/azure-sdk-for-python) and [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 3 updates in the /shared_libs/field_utils_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy) and [bandit](https://github.com/PyCQA/bandit).\nBumps the python-dependencies group with 5 updates in the /shared_libs/hl7_validation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [xmlschema](https://github.com/sissaschool/xmlschema) | `3.4.3` | `4.3.2` |\n| [elementpath](https://github.com/sissaschool/elementpath) | `4.8.0` | `5.1.4` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/message_bus_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 7 updates in the /shared_libs/metric_sender_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.1` | `1.9.4` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 5 updates in the /shared_libs/otel_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/transformer_base_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\n\nUpdates `fastapi` from 0.136.3 to 0.141.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \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 \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \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.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \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.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\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 \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \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.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\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/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.136.3...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `starlette` from 1.3.1 to 1.6.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.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes 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/starlette/pull/3431\"\u003eKludex/starlette#3431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions by \u003ca href=\"https://github.com/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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.5.1...1.6.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte Range like \u003ccode\u003ebytes=5-4\u003c/code\u003e by \u003ca href=\"https://github.com/nikolauspschuetz\"\u003e\u003ccode\u003e@​nikolauspschuetz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003eencode/starlette#3389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003eencode/starlette#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.5.0...1.5.1\"\u003ehttps://github.com/encode/starlette/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.0\u003c/h2\u003e\n\u003cp\u003eThis release is all about giving \u003ccode\u003eGZipMiddleware\u003c/code\u003e some love. 🗜️\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3418\"\u003eencode/starlette#3418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003eencode/starlette#3419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3420\"\u003eencode/starlette#3420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3421\"\u003eencode/starlette#3421\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.4.1...1.5.0\"\u003ehttps://github.com/encode/starlette/compare/1.4.1...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e in \u003ccode\u003eGZipResponder\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/starlette/pull/3415\"\u003eKludex/starlette#3415\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.4.0...1.4.1\"\u003ehttps://github.com/Kludex/starlette/compare/1.4.0...1.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLazily allocate GZipMiddleware compression resources 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/starlette/pull/3407\"\u003eKludex/starlette#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\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/starlette/pull/3411\"\u003eKludex/starlette#3411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOffload large GZip compression 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/starlette/pull/3410\"\u003eKludex/starlette#3410\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/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3334\"\u003eKludex/starlette#3334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lkk7\"\u003e\u003ccode\u003e@​lkk7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3359\"\u003eKludex/starlette#3359\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.3.1...1.4.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.3.1...1.4.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.6.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3431\"\u003e#3431\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e information via response extensions \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3130\"\u003e#3130\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.1 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte ranges in \u003ccode\u003eFileResponse\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003e#3389\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003e#3430\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3418\"\u003e#3418\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3421\"\u003e#3421\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003e#3419\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3420\"\u003e#3420\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e to 128 KiB in \u003ccode\u003eGZipResponder\u003c/code\u003e, keeping it usable without the new keyword argument \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3415\"\u003e#3415\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eOffload large GZip compression to a worker thread, keeping the event loop responsive. \u003ccode\u003eGZipMiddleware\u003c/code\u003e accepts a new \u003ccode\u003ethread_minimum_size\u003c/code\u003e parameter (default 128 KiB) controlling the minimum body chunk size compressed in a thread \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3410\"\u003e#3410\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\u003c/code\u003e, reducing memory usage during compression \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3411\"\u003e#3411\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLazily allocate \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression resources, avoiding compressor allocation for responses that are never compressed \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3407\"\u003e#3407\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/4f250d6b814587e20c5365f0a5f0c4d42bcb929f\"\u003e\u003ccode\u003e4f250d6\u003c/code\u003e\u003c/a\u003e Version 1.6.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9eea41ad3c26ad21b9bdfe4578c1cdad6c9b9ac2\"\u003e\u003ccode\u003e9eea41a\u003c/code\u003e\u003c/a\u003e Expose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/38f8999a229610b36f39d11f67d80515a15c6330\"\u003e\u003ccode\u003e38f8999\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3431\"\u003e#3431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c41236c03868fb3779a64101f4ea88cd47877e23\"\u003e\u003ccode\u003ec41236c\u003c/code\u003e\u003c/a\u003e Version 1.5.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3432\"\u003e#3432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9c500db197859dba4a8db13fa8e7d2c55de8152c\"\u003e\u003ccode\u003e9c500db\u003c/code\u003e\u003c/a\u003e Limit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3430\"\u003e#3430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/78ae82cad482fe66a73fb1217f0a6609b3f998f6\"\u003e\u003ccode\u003e78ae82c\u003c/code\u003e\u003c/a\u003e Reject inverted single-byte Range like bytes=5-4 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c1d6edaf43920104d4389e983c3e0314f6af14cf\"\u003e\u003ccode\u003ec1d6eda\u003c/code\u003e\u003c/a\u003e chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/ee66ca48418780d6415d231851b31464febc32de\"\u003e\u003ccode\u003eee66ca4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 8 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/00d10167523f819d39d5ca36732348d58645a447\"\u003e\u003ccode\u003e00d1016\u003c/code\u003e\u003c/a\u003e fix(tests): skip test_staticfiles_filename_too_long on Windows where os.pathc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/d96887ea7b49db3d1d15994be6438c7fe99936f4\"\u003e\u003ccode\u003ed96887e\u003c/code\u003e\u003c/a\u003e Add Pydantic Logfire banner to the docs (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3428\"\u003e#3428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.3.1...1.6.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.37.0 to 0.52.4\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.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\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\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\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\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.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-identity` from 1.23.0 to 1.25.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/a989ea467731265fdf097b622ba254703187746b\"\u003e\u003ccode\u003ea989ea4\u003c/code\u003e\u003c/a\u003e [Identity] Prep patch release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/79728834e7f38018d372860cf9117bf51d9ed417\"\u003e\u003ccode\u003e7972883\u003c/code\u003e\u003c/a\u003e [Identity] Adjust refresh logic (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45496\"\u003e#45496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/04764a9a8a0cb59aab6421b41152246853dfcfe8\"\u003e\u003ccode\u003e04764a9\u003c/code\u003e\u003c/a\u003e add psscript to convert apiview json files to md (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45589\"\u003e#45589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/50e01659d7204865dfa07c5ece1019ed9a229b4f\"\u003e\u003ccode\u003e50e0165\u003c/code\u003e\u003c/a\u003e Sync eng/common directory with azure-sdk-tools for PR 14461 (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45646\"\u003e#45646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5333117e0e181404ff4deaa757e9b6ef86dabf8b\"\u003e\u003ccode\u003e5333117\u003c/code\u003e\u003c/a\u003e Add Bo to /sdk/ai/azure-ai-projects owner list (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45664\"\u003e#45664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/775d6942e4335422fc69da8e997a6069e356b104\"\u003e\u003ccode\u003e775d694\u003c/code\u003e\u003c/a\u003e Doc and automation updates for .github sync directory changes (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45630\"\u003e#45630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/c6e48b5cd71adf5728a5e2f33bc9f62fb221221f\"\u003e\u003ccode\u003ec6e48b5\u003c/code\u003e\u003c/a\u003e [Core] Prepare release (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45656\"\u003e#45656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/ae769c4e9379c8d309bffa5ccb76dcfba64e1f71\"\u003e\u003ccode\u003eae769c4\u003c/code\u003e\u003c/a\u003e Fix custom Memory Stores LRO poller operation (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45662\"\u003e#45662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/6074492844d670316eb171756483f1394a6c94c7\"\u003e\u003ccode\u003e6074492\u003c/code\u003e\u003c/a\u003e Add asset id none check in dt (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45618\"\u003e#45618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e1a986aeb7a8001bd3a4f336cf096c2b050aa480\"\u003e\u003ccode\u003ee1a986a\u003c/code\u003e\u003c/a\u003e Bump tar from 7.5.10 to 7.5.11 in /eng/common/tsp-client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45640\"\u003e#45640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.23.0...azure-identity_1.25.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websocket-client` from 1.9.0 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/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.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\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/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\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/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\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/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.9...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8aabf8435357eaffceca7237f371e293b8168e54\"\u003e\u003ccode\u003e8aabf84\u003c/code\u003e\u003c/a\u003e Drop +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4d8ad2ab5e86c99581b73775f2c00b9b8265b589\"\u003e\u003ccode\u003e4d8ad2a\u003c/code\u003e\u003c/a\u003e Update changelog for 2.3 release (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21728\"\u003e#21728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c2154672040c52e481f423854d104e6cf172585\"\u003e\u003ccode\u003e2c21546\u003c/code\u003e\u003c/a\u003e [mypyc] Update documentation of race conditions under free threading (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21726\"\u003e#21726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a9f62a3cf98a58a7a2607b7c81695802b39f5edc\"\u003e\u003ccode\u003ea9f62a3\u003c/code\u003e\u003c/a\u003e [mypyc] Make attribute access memory safe on free-threaded builds (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21705\"\u003e#21705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 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/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.0 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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wi...\n\n_Description has been truncated_","html_url":"https://github.com/joelparkerhenderson/Integration-Hub-Beta/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelparkerhenderson%2FIntegration-Hub-Beta/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-04T07:19:48.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5345405181","node_id":"PR_kwDOTby3is8AAAABCKf9yA","number":22,"state":"closed","title":"build(deps): bump the pip-minor-patch group across 1 directory with 72 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T07:14:54.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T07:19:48.000Z","updated_at":"2026-09-11T07:14:56.000Z","time_to_close":604506,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-minor-patch","update_count":72,"packages":[{"name":"langchain","old_version":"1.3.13","new_version":"1.3.18","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.3.5","new_version":"1.6.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pypdfium2","old_version":"5.11.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"duckdb","old_version":"1.5.4","new_version":"1.5.5","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"yfinance","old_version":"1.5.1","new_version":"1.7.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"akshare","old_version":"1.18.64","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"ccxt","old_version":"4.5.64","new_version":"4.5.76","repository_url":"https://github.com/ccxt/ccxt"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"sse-starlette","old_version":"3.4.5","new_version":"3.4.8","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"ddgs","old_version":"9.14.4","new_version":"9.16.0","repository_url":"https://github.com/deedy5/ddgs"},{"name":"matplotlib","old_version":"3.11.0","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"longbridge","old_version":"4.3.3","new_version":"4.5.0","repository_url":"https://github.com/longbridge/openapi"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cachetools","old_version":"7.1.4","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"caio","old_version":"0.9.25","new_version":"0.12.2","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"curl-cffi","old_version":"0.15.0","new_version":"0.16.2","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"cyclopts","old_version":"4.21.0","new_version":"4.23.3","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"griffelib","old_version":"2.1.0","new_version":"2.2.0"},{"name":"h2","old_version":"4.3.0","new_version":"4.4.1","repository_url":"https://github.com/python-hyper/h2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"9.0.0","new_version":"9.0.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"joserfc","old_version":"1.7.3","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.2","new_version":"0.11.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"llvmlite","old_version":"0.48.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.2","repository_url":"https://github.com/lxml/lxml"},{"name":"narwhals","old_version":"2.23.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numba","old_version":"0.66.0","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"opentelemetry-api","old_version":"1.43.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"peewee","old_version":"4.2.1","new_version":"4.4.0","repository_url":"https://github.com/coleifer/peewee"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyphen","old_version":"0.17.2","new_version":"0.18.1","repository_url":"https://github.com/Kozea/Pyphen"},{"name":"pytz","old_version":"2026.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.9.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"simplejson","old_version":"4.1.1","new_version":"4.1.2","repository_url":"https://github.com/simplejson/simplejson"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tiktoken","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"yarl","old_version":"1.24.2","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 72 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.13` | `1.3.18` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.1` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.3.5` | `1.6.0` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.11.0` | `5.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.4` | `1.5.5` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.1` | `1.7.0` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.64` | `1.18.94` |\n| [ccxt](https://github.com/ccxt/ccxt) | `4.5.64` | `4.5.76` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.5` | `3.4.8` |\n| [ddgs](https://github.com/deedy5/ddgs) | `9.14.4` | `9.16.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.0` | `3.11.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [longbridge](https://github.com/longbridge/openapi) | `4.3.3` | `4.5.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.4` | `7.1.8` |\n| [caio](https://github.com/mosquito/caio) | `0.9.25` | `0.12.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.15.0` | `0.16.2` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.21.0` | `4.23.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.64.0` |\n| griffelib | `2.1.0` | `2.2.0` |\n| [h2](https://github.com/python-hyper/h2) | `4.3.0` | `4.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `9.0.0` | `9.0.1` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.3` | `1.7.5` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.2` | `0.11.2` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.48.0` | `0.49.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.2` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.23.0` | `2.25.0` |\n| [numba](https://github.com/numba/numba) | `0.66.0` | `0.67.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.43.0` | `1.44.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [peewee](https://github.com/coleifer/peewee) | `4.2.1` | `4.4.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.6` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyphen](https://github.com/Kozea/Pyphen) | `0.17.2` | `0.18.1` |\n| [pytz](https://github.com/stub42/pytz) | `2026.2` | `2026.3.post1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.9.3` |\n| [simplejson](https://github.com/simplejson/simplejson) | `4.1.1` | `4.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.13.0` | `0.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.24.5` |\n\n\nUpdates `langchain` from 1.3.13 to 1.3.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain==1.3.18\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.17\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\nfix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.17\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.16\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.17 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39893\"\u003e#39893\u003c/a\u003e)\nfix(langchain): frame custom HITL rejection reasons (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39773\"\u003e#39773\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.16\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.15\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.16 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39806\"\u003e#39806\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfeat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39754\"\u003e#39754\u003c/a\u003e)\nfix(langchain): re-raise non-retryable exceptions in ModelRetryMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38960\"\u003e#38960\u003c/a\u003e)\nchore(langchain): update docs on error handling for json schema (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39632\"\u003e#39632\u003c/a\u003e)\nfix(langchain): preserve final repeated schema ordering (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39284\"\u003e#39284\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.15\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.14\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.15 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39595\"\u003e#39595\u003c/a\u003e)\nfeat(langchain): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eAgentMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38910\"\u003e#38910\u003c/a\u003e)\nchore(langchain): fix type errors in tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39589\"\u003e#39589\u003c/a\u003e)\nchore: bump h2 from 4.3.0 to 4.4.1 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39324\"\u003e#39324\u003c/a\u003e)\nfix(langchain): preserve history on \u003ccode\u003eSummarizationMiddleware\u003c/code\u003e summary failure (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39268\"\u003e#39268\u003c/a\u003e)\nfix(langchain): handle import error in \u003ccode\u003eLLMToolEmulator\u003c/code\u003e by \u003ccode\u003emodel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39290\"\u003e#39290\u003c/a\u003e)\nrefactor(langchain): update doc strings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39305\"\u003e#39305\u003c/a\u003e)\nfeat(langchain): add \u003ccode\u003estate_schema\u003c/code\u003e param to \u003ccode\u003ewrap_tool_call\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39292\"\u003e#39292\u003c/a\u003e)\nfix(langchain): re-export \u003ccode\u003ePIIMatch\u003c/code\u003e from \u003ccode\u003emiddleware\u003c/code\u003e package (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39291\"\u003e#39291\u003c/a\u003e)\nfix(langchain): restrict narrowed \u003ccode\u003eToolStrategy\u003c/code\u003e in bound tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39259\"\u003e#39259\u003c/a\u003e)\nfeat(langchain): filter internal middleware model calls from \u003ccode\u003emessages\u003c/code\u003e projection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39252\"\u003e#39252\u003c/a\u003e)\nchore: bump aiohttp from 3.14.1 to 3.14.3 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39242\"\u003e#39242\u003c/a\u003e)\nchore: bump cryptography from 48.0.1 to 50.0.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39240\"\u003e#39240\u003c/a\u003e)\ntest(langchain): regression test for shell tool + checkpointer msgpack error (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39267\"\u003e#39267\u003c/a\u003e)\nfix(langchain): handle malformed structured-output responses (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39245\"\u003e#39245\u003c/a\u003e)\nfix(langchain): prevent orphaned \u003ccode\u003etool_calls\u003c/code\u003e in \u003ccode\u003eToolCallLimitMiddleware\u003c/code\u003e end behavior (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39258\"\u003e#39258\u003c/a\u003e)\nfix(langchain): add aliases for bedrock mantle chat models (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39260\"\u003e#39260\u003c/a\u003e)\nfeat(langchain): add LangSmith provider to \u003ccode\u003einit_chat_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39224\"\u003e#39224\u003c/a\u003e)\nfix(langchain): clear stale \u003ccode\u003estructured_response\u003c/code\u003e between checkpointed turns (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39248\"\u003e#39248\u003c/a\u003e)\nfix(langchain): stop HITL approval gates from silently failing open (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39247\"\u003e#39247\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(langchain): propagate model middleware control flow (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39199\"\u003e#39199\u003c/a\u003e)\nfix(langchain): update Anthropic config test (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39172\"\u003e#39172\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/513e425fc0138fe5383ab28b638d5fc959b53f3f\"\u003e\u003ccode\u003e513e425\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39954\"\u003e#39954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/fd2fbd702bf429f820587584a4e5cdfbe57d5d34\"\u003e\u003ccode\u003efd2fbd7\u003c/code\u003e\u003c/a\u003e feat(anthropic): support 1.0 sdk (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39938\"\u003e#39938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b0fb33f919dd868f3db6262d883a84eb454697b0\"\u003e\u003ccode\u003eb0fb33f\u003c/code\u003e\u003c/a\u003e fix(perplexity): map Responses API cache tokens into input_token_details (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39\"\u003e#39\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain==1.3.13...langchain==1.3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.4.9 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.0\u003c/p\u003e\n\u003cp\u003erevert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\nrelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\nfix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\nrelease(core): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39832\"\u003e#39832\u003c/a\u003e)\nfeat(core): propagate gateway information on error path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39829\"\u003e#39829\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\nfix(core): resolve postponed annotations in \u003ccode\u003eStructuredTool._injected_args_keys\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39602\"\u003e#39602\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\nfix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict mappings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39750\"\u003e#39750\u003c/a\u003e)\nfix(core): make subprocess and temporary file tests portable on Windows (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39664\"\u003e#39664\u003c/a\u003e)\nfix(core): fail fast when tool schemas can't resolve forward refs during serialization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39570\"\u003e#39570\u003c/a\u003e)\ntest(core): avoid version-dependent runnable snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39705\"\u003e#39705\u003c/a\u003e)\nfix(core): require all nested properties for strict tool schemas (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39306\"\u003e#39306\u003c/a\u003e)\nfix(core): remove stale sync-stream \u003ccode\u003exfail\u003c/code\u003e [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39720\"\u003e#39720\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39723\"\u003e#39723\u003c/a\u003e)\nperf(core): Lazily import transformers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38037\"\u003e#38037\u003c/a\u003e)\nfix(core): accept non-dict Mapping values in mustache templates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39680\"\u003e#39680\u003c/a\u003e)\ndocs(core): clarify \u003ccode\u003eRunnable\u003c/code\u003e pipe coercion [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39075\"\u003e#39075\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39707\"\u003e#39707\u003c/a\u003e)\nfix(core): finalize chain-group runs on \u003ccode\u003eBaseException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39699\"\u003e#39699\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.5\u003c/p\u003e\n\u003cp\u003echore(core): release 1.5.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39704\"\u003e#39704\u003c/a\u003e)\nfeat(core): incorporate gateway metadata to traces (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39703\"\u003e#39703\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.5\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.4\u003c/p\u003e\n\u003cp\u003erelease(core): 1.5.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39655\"\u003e#39655\u003c/a\u003e)\nfix(core): make abatch_iterate consistent with batch_iterate for None and zero size (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39367\"\u003e#39367\u003c/a\u003e)\nfix(core): respect pydantic aliases when validating tool inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39572\"\u003e#39572\u003c/a\u003e)\nfix(core): issues in merging chunks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39535\"\u003e#39535\u003c/a\u003e)\nfix(core): handle v1 base model validation in async path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39576\"\u003e#39576\u003c/a\u003e)\nfix(core): handle tool descriptions for infer_schema=False (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39573\"\u003e#39573\u003c/a\u003e)\nfix(core): clear usage metadata callback on exceptions in context manager (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39616\"\u003e#39616\u003c/a\u003e)\nfix(core): handle falsy LLM and chat model caches (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39283\"\u003e#39283\u003c/a\u003e)\nchore(core): add httpx as an explicit dep (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39612\"\u003e#39612\u003c/a\u003e)\nfix(core): preserve non-str/non-dict items in \u003ccode\u003eDictPromptTemplate\u003c/code\u003e list values (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39588\"\u003e#39588\u003c/a\u003e)\nfix(core): raise ValueError when explicit tool_outputs length mismatches tool_calls in tool_example_to_messages (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39142\"\u003e#39142\u003c/a\u003e)\nfix(core): guard malformed Anthropic content blocks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38670\"\u003e#38670\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46\"\u003e\u003ccode\u003e4fe9d30\u003c/code\u003e\u003c/a\u003e chore(openai): fix tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39972\"\u003e#39972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c\"\u003e\u003ccode\u003e8fa38dc\u003c/code\u003e\u003c/a\u003e revert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372\"\u003e\u003ccode\u003e122030d\u003c/code\u003e\u003c/a\u003e release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.9...langchain-core==1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-openai` from 1.3.5 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-openai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-openai==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.2\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(openai): raise clear error on unexpected response type in \u003ccode\u003e_create_chat_result\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39731\"\u003e#39731\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39719\"\u003e#39719\u003c/a\u003e)\nfix(openai): preserve reasoning item boundaries (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39278\"\u003e#39278\u003c/a\u003e)\nrelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\nrelease(openai): 1.5.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39653\"\u003e#39653\u003c/a\u003e)\nfix(openai): preserve streamed encrypted reasoning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39635\"\u003e#39635\u003c/a\u003e)\nchore(infra): support langsmith gateway in CI (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39651\"\u003e#39651\u003c/a\u003e)\nrelease(openai): 1.5.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39629\"\u003e#39629\u003c/a\u003e)\nfeat(openai): support openai 3.0 SDK (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39613\"\u003e#39613\u003c/a\u003e)\nchore(partners): bump langgraph floor in openai and huggingface lockfiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39617\"\u003e#39617\u003c/a\u003e)\nrelease(openai): 1.4.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39485\"\u003e#39485\u003c/a\u003e)\nfix(openai): filter invalid tool calls from content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39366\"\u003e#39366\u003c/a\u003e)\nchore(openai): update guidance for responses API for OpenAI-compatible providers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39327\"\u003e#39327\u003c/a\u003e)\nchore(openai): update docstring for \u003ccode\u003einclude_response_headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39326\"\u003e#39326\u003c/a\u003e)\nrelease(openai): 1.4.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39322\"\u003e#39322\u003c/a\u003e)\nfix(openai): handle \u003ccode\u003eContextWindowExceededError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39300\"\u003e#39300\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(openai): filter langchain-generated content block IDs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39209\"\u003e#39209\u003c/a\u003e)\nfix(openai): preserve Responses \u003ccode\u003etext\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39204\"\u003e#39204\u003c/a\u003e)\nfix(openai): redact MCP \u003ccode\u003eauthorization\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39155\"\u003e#39155\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39050\"\u003e#39050\u003c/a\u003e)\nrelease(openai): 1.4.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39045\"\u003e#39045\u003c/a\u003e)\nfeat(anthropic,fireworks,openai): support langsmith gateway through env var (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38742\"\u003e#38742\u003c/a\u003e)\nfix(openai): correct \u003ccode\u003egpt-5.3-chat-latest\u003c/code\u003e profile (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39009\"\u003e#39009\u003c/a\u003e)\nrelease(openai): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38983\"\u003e#38983\u003c/a\u003e)\nchore: bump pillow from 12.2.0 to 12.3.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38999\"\u003e#38999\u003c/a\u003e)\nfeat(core): add \u003ccode\u003ereasoning_effort\u003c/code\u003e as a standard chat model parameter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38887\"\u003e#38887\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38797\"\u003e#38797\u003c/a\u003e)\nrelease(openai): 1.3.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38785\"\u003e#38785\u003c/a\u003e)\nfeat(openai): support explicit prompt caching (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38762\"\u003e#38762\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3478c28ef21435162cb67abbd2aaef67c7cd8981\"\u003e\u003ccode\u003e3478c28\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39763\"\u003e#39763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/420dfc94516f57a4d8662132a55bc532afbc6045\"\u003e\u003ccode\u003e420dfc9\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/85602c3676fbd51e098a01d7c66638719f529f84\"\u003e\u003ccode\u003e85602c3\u003c/code\u003e\u003c/a\u003e release(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/5c3538e83a24eaf819ecec066773a232dcd4a8e6\"\u003e\u003ccode\u003e5c3538e\u003c/code\u003e\u003c/a\u003e fix(core): resolve postponed annotations in `StructuredTool._injected_args_ke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9984a87fa5a6971c76cb12fc75b37ed74286b740\"\u003e\u003ccode\u003e9984a87\u003c/code\u003e\u003c/a\u003e feat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b3e9eef13c23c3a048f9846e1592b658f85f5f94\"\u003e\u003ccode\u003eb3e9eef\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39751\"\u003e#39751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ded2a1fb3c06a9562d9079e42099020ecaca4060\"\u003e\u003ccode\u003eded2a1f\u003c/code\u003e\u003c/a\u003e fix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/04ae7447d72e61841905a41b309856c5191452fb\"\u003e\u003ccode\u003e04ae744\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict ma...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/37f266278d780cd7ebdfbf1891ba92066192d687\"\u003e\u003ccode\u003e37f2662\u003c/code\u003e\u003c/a\u003e feat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2019bf5ebe50324c548f67c2666a804343f9b772\"\u003e\u003ccode\u003e2019bf5\u003c/code\u003e\u003c/a\u003e fix(openai): raise clear error on unexpected response type in `_create_chat_r...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-openai==1.3.5...langchain-openai==1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.9 to 1.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.11\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8533\"\u003e#8533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8532\"\u003e#8532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8502\"\u003e#8502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump cryptography from 48.0.1 to 50.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8528\"\u003e#8528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-sqlite): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8481\"\u003e#8481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8480\"\u003e#8480\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.10\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.9\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.10 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8462\"\u003e#8462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump jupyterlab from 4.5.9 to 4.5.10 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8440\"\u003e#8440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump setuptools from 80.9.0 to 83.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8435\"\u003e#8435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): type v3 stream_events return and native projections (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8389\"\u003e#8389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert(langgraph): delete TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8403\"\u003e#8403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): drop tags from TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8402\"\u003e#8402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8362\"\u003e#8362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump mistune from 3.2.1 to 3.3.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8317\"\u003e#8317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump soupsieve from 2.8.1 to 2.8.4 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8318\"\u003e#8318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(cli): allow langgraph-api versions up to 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8319\"\u003e#8319\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/644815f9e5bc52ad8f7a5227a456227e9c3e639b\"\u003e\u003ccode\u003e644815f\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7d6b5790ba84ce38c26f27a533d8419a31103c36\"\u003e\u003ccode\u003e7d6b579\u003c/code\u003e\u003c/a\u003e feat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d56666f7fbf0d380ad84cdf0cbe5aa48ab0cc086\"\u003e\u003ccode\u003ed56666f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 7 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/6a2822d3c77dad49a96718de73095f18717728be\"\u003e\u003ccode\u003e6a2822d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 5 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fde3068970679184b68d3d068a92c83c966a4888\"\u003e\u003ccode\u003efde3068\u003c/code\u003e\u003c/a\u003e release(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.9...1.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph-checkpoint` from 4.1.1 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph-checkpoint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph-checkpoint==4.2.0\u003c/h2\u003e\n\u003cp\u003eChanges since checkpoint==4.1.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8490\"\u003e#8490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(checkpoint,checkpoint-postgres): add opt-in omit_expired to skip expired rows on read (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8354\"\u003e#8354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8248\"\u003e#8248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8173\"\u003e#8173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: standardize package \u003ccode\u003eREADME.md\u003c/code\u003e structure (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8064\"\u003e#8064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: migrate Python type checking to ty (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8002\"\u003e#8002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the major group in /libs/checkpoint with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7967\"\u003e#7967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 3 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7960\"\u003e#7960\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f22af6248c93df08b553e9a264f6367797e0fddb\"\u003e\u003ccode\u003ef22af62\u003c/code\u003e\u003c/a\u003e chore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/658541c4960f329864a2523fc7d52427e8190bed\"\u003e\u003ccode\u003e658541c\u003c/code\u003e\u003c/a\u003e chore(checkpoint-postgres,checkpoint-sqlite): enable PLC0415 lint rule (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8540\"\u003e#8540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fb3d5f0399222504e015fe959e0e79fdc6e00a65\"\u003e\u003ccode\u003efb3d5f0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/01521c1b1cc4c035f64b9be40f2913285128f526\"\u003e\u003ccode\u003e01521c1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/cd62febcfae628d0930d1f7d3cb3b5919d4b800f\"\u003e\u003ccode\u003ecd62feb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 update...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/checkpoint==4.1.1...checkpoint==4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.11.0 to 5.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental \u003ccode\u003epyemscripten_2026_0_wasm32\u003c/code\u003e (Pyodide) build support added. \u003cem\u003eHowever, the resulting builds are flaky at runtime and subject to various types of random crashes. Freezes on shutdown have also been observed.\u003c/em\u003e\nWhile these issues persist, PyEmscripten wheels will not be uploaded to PyPI, but they are included in the release process and can be downloaded from GitHub on an experimental basis. If you can help track down and fix these issues, please reach out.\nNote: Our PyEmscripten wheels are bigger than usual, as they are built with debug symbols (a non-debug build is not considered useful at this stage).\u003c/li\u003e\n\u003cli\u003eFixed compatibility with Python 3.6 and 3.7.\n\u003cul\u003e\n\u003cli\u003eRuntime support was inadvertently broken due to a faulty cached property backport which held only one cache per class, not per instance as should have been.\nThe accidental loss of caches broke key assumptions of our autoclose logic, which relies on \u003ccode\u003ecached_property\u003c/code\u003e since 5.8.0. (Earlier versions that did not make extensive use of cached properties might work but have not been explicitly tested.)\u003c/li\u003e\n\u003cli\u003eThis release replaces both \u003ccode\u003efunctools.cached_property\u003c/code\u003e and the faulty \u003ccode\u003efunctools.lru_cache()\u003c/code\u003e based backport with our own, backward compatible \u003ccode\u003ecached_property\u003c/code\u003e implementation along with thorough documentation.\u003c/li\u003e\n\u003cli\u003eAlso, fixed setup (i.e. source installation) with Python 3.6 and its max available setup dependency versions (that is, \u003ccode\u003esetuptools\u003c/code\u003e 59). This had probably been broken for a long time. (A few non-breaking issues remain, e.g. for some reason we end up with a \u003ccode\u003epurelib\u003c/code\u003e directory, but it should be \u003ccode\u003eplatlib\u003c/code\u003e.)\u003c/li\u003e\n\u003cli\u003eBear in mind that ctypesgen continues to require Python \u003ccode\u003e\u0026gt;=3.8\u003c/code\u003e at this time (3.6 compat not being a priority in that case), but you can install with \u003ccode\u003e--no-build-isolation\u003c/code\u003e and let the reference bindings be used, or try adding ctypesgen's \u003ccode\u003esrc/\u003c/code\u003e to \u003ccode\u003ePYTHONPATH\u003c/code\u003e to bypass setup, and see how it goes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNote: We do not plan to (and practically cannot) keep up compatibility with outdated Python versions indefinitely.\u003c/strong\u003e In particular, setup compatibility may be dropped sooner or later in favor of contemporary Python packaging concepts, like migrating as much as possible to \u003ccode\u003epyproject.toml\u003c/code\u003e. That said, we are happy to restore compatibility at this point, and fix any \u003cem\u003eunintentional\u003c/em\u003e breakage.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eMANIFEST.in\u003c/code\u003e missing Windows spoof headers, which resulted in subtly incorrect bindings when installing from an sdist on Windows, as seen in test failures. (Release wheels have been unaffected and passed the test suite, so this issue went unnoticed for a while.)\u003c/li\u003e\n\u003cli\u003eBumped \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.1\u003c/code\u003e to \u003ccode\u003e2407.3\u003c/code\u003e. Made its setup python 3.6 compatible likewise (wheels should have worked before now). Changed versioning and release process so that CI no longer needs to push to the repository (may eventually become a blueprint for pypdfium2 itself). More documentation added, including \u003ccode\u003emanylinux2014\u003c/code\u003e POC.\u003c/li\u003e\n\u003cli\u003eInternal improvements (non-exhaustive):\n\u003cul\u003e\n\u003cli\u003eProperly clean up \u003ccode\u003e*.egg-info/\u003c/code\u003e and \u003ccode\u003ebuild/\u003c/code\u003e before packaging, to avoid mad file inclusion bugs (ran into this while working on setup include rules).\u003c/li\u003e\n\u003cli\u003eMigrated from requirements files to PEP 735 dependency groups (\u003ccode\u003epyproject.toml\u003c/code\u003e).\nRecent enough \u003ccode\u003epip\u003c/code\u003e should be available to Python \u0026gt;= 3.9. For compatibility with older versions, feel free to use \u003ccode\u003e./utils/misc/install_dep_group.py\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eApplied dependency cooldowns to internal callers of \u003ccode\u003epip install\u003c/code\u003e. Always use virtual environments in CI. Use lockfiles in sensitive areas (e.g. publish jobs).\u003c/li\u003e\n\u003cli\u003eRearranged \u0026amp; improved utilities. Cleaner distinction between \u003ccode\u003esetupsrc/\u003c/code\u003e and \u003ccode\u003eutils/\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eWork around persistent i686 container network issues by downgrading host runner to \u003ccode\u003eubuntu-24.04\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eLet \u003ccode\u003esetupsrc/\u003c/code\u003e share code from \u003ccode\u003esrc/\u003c/code\u003e through a \u003ccode\u003epypdfium2_cfg._shared\u003c/code\u003e submodule that can be added to \u003ccode\u003esys.path\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[manylinux_mipsle]\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\u003cblockquote\u003e\n\u003cp\u003e[!CAUTION]\nThe following builds are affected by known, major issues (e.g. endianness bugs, crashes, freezes) and are \u003cstrong\u003eNOT\u003c/strong\u003e considered ready for production use:\n\u003ccode\u003e[manylinux_s390x, musllinux_s390x, pyodide_wasm32]\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eCommit logs\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eCommits between \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.12.1\"\u003e\u003ccode\u003e5.12.1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.13.0\"\u003e\u003ccode\u003e5.13.0\u003c/code\u003e\u003c/a\u003e (latest commit first):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea4659102\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de35\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367a\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e78\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce0\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd619\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\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/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea465910\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de3\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e7\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd61\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3282e36375fd6e139f885ff634747ab0fe643e66\"\u003e\u003ccode\u003e3282e36\u003c/code\u003e\u003c/a\u003e Add zizmor to check step\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/07b84aaaa9c4c44429e0316c15c179b64c004d0a\"\u003e\u003ccode\u003e07b84aa\u003c/code\u003e\u003c/a\u003e Progress changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/6ec38d2aa64d59f02892ddf07f601bbdb5bbf53e\"\u003e\u003ccode\u003e6ec38d2\u003c/code\u003e\u003c/a\u003e git_net_additions: further improve fallback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b5cdd7c7fcd2c01cd7744b6824f977bbbcb831c6\"\u003e\u003ccode\u003eb5cdd7c\u003c/code\u003e\u003c/a\u003e git_net_additions: fancier fallback for binary files\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.11.0...5.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.4 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.5 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.5\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix numpy deprecations by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/505\"\u003educkdb/duckdb-python#505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix alias of \u003ccode\u003eDuckDBPyRelation.query\u003c/code\u003e (closes \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/468\"\u003e#468\u003c/a\u003e) by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/524\"\u003educkdb/duckdb-python#524\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/duckdb/duckdb-python/commit/b236c8194ed14c7a7c685e0534dde501cc855b3a\"\u003e\u003ccode\u003eb236c81\u003c/code\u003e\u003c/a\u003e Pin submodule to release hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/e6a21c5b5d65d741fafd5a7389c93b8b86a7f249\"\u003e\u003ccode\u003ee6a21c5\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/f637bf42683030cbb108268581b866f13cb75031\"\u003e\u003ccode\u003ef637bf4\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/4c5c73c63381bd0587fd42b41093c8f0abe9f17c\"\u003e\u003ccode\u003e4c5c73c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6fae28061912de88c3c0f6e6ad6b2f3fc5ee5235\"\u003e\u003ccode\u003e6fae280\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/d8d5f0a36003c9090ea9480cdefa8f4b4122fece\"\u003e\u003ccode\u003ed8d5f0a\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5d85f06025e83e3d2c69813acf4b2dc02bebc415\"\u003e\u003ccode\u003e5d85f06\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c3cbf8d9ca87cea3dfbb89bfa2102ff4ec530f00\"\u003e\u003ccode\u003ec3cbf8d\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/93418b65c6ca821d71d9a091fb5218ad55d8a4eb\"\u003e\u003ccode\u003e93418b6\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/24f1915b590e1e663a14c0bff9e49bf28ebece9b\"\u003e\u003ccode\u003e24f1915\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.4...v1.5.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.5.3 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.6.0 - 2026/08/31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix caching of functions whose source cannot be retrieved, such as functions\ndefined in a notebook cell. Their identity fell back to\n\u003ccode\u003estr(hash(func.__code__))\u003c/code\u003e, which is salted by \u003ccode\u003ePYTHONHASHSEED\u003c/code\u003e and so\ndiffered between processes. A worker reading the \u003ccode\u003efunc_code.py\u003c/code\u003e written by\nanother one concluded that the function had changed and wiped the whole\ncache directory for it, discarding results computed by its peers.\n\u003ccode\u003efunc_code.py\u003c/code\u003e is also no longer rewritten in place, so a reader can no\nlonger catch it half-written and draw the same conclusion.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1694\"\u003ejoblib/joblib#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop python 3.9 support. The oldest supported Python version\nis now Python 3.10.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1773\"\u003ejoblib/joblib#1773\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eeval_expr\u003c/code\u003e (used to evaluate the \u003ccode\u003epre_dispatch\u003c/code\u003e argument of\n\u003ccode\u003eParallel\u003c/code\u003e) to raise a \u003ccode\u003eValueError\u003c/code\u003e as documented instead of leaking a\n\u003ccode\u003eZeroDivisionError\u003c/code\u003e for expressions that divide or take a modulo by zero.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1810\"\u003ejoblib/joblib#1810\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMemorizedResult\u003c/code\u003e now forwards \u003ccode\u003emmap_mode\u003c/code\u003e to its store backend, so a\ncached array reconstructed from a location is memory-mapped as requested\ninstead of being loaded fully into memory.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1799\"\u003ejoblib/joblib#1799\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnvendor cloudpickle to more quickly benefit from maintenance releases\nof cloudpickle\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1775\"\u003ejoblib/joblib#1775\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMemory.cache\u003c/code\u003e for functions with a keyword-only argument that has a\ndefault declared before a keyword-only argument without a default.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1731\"\u003ejoblib/joblib#1731\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behavior of \u003ccode\u003efilter_args\u003c/code\u003e on some precise cases.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1800\"\u003ejoblib/joblib#1800\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a concurrency error that could happen with unordered generator.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1789\"\u003ejoblib/joblib#1789\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003edump()\u003c/code\u003e now accepts any input \u003ccode\u003eos.PathLike\u003c/code\u003e object to be consistent with\n\u003ccode\u003eload\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1812\"\u003ejoblib/joblib#1812\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe documentation now uses pydata sphinx theme. Furthermore, optional dependencies\n\u003ccode\u003etest\u003c/code\u003e and \u003ccode\u003edocs\u003c/code\u003e have been added to \u003ccode\u003epyproject.toml\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1774\"\u003ejoblib/joblib#1774\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky 3.6.0\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/joblib/joblib/commit/cd9a6b05fc4f2b1c8202eb62c4e863484f8cc099\"\u003e\u003ccode\u003ecd9a6b0\u003c/code\u003e\u003c/a\u003e Release 1.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1844\"\u003e#1844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/d873f972949d78166af6c945667c53f04d41fed6\"\u003e\u003ccode\u003ed873f97\u003c/code\u003e\u003c/a\u003e MNT vendor loky 3.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4ff61afd0849f18fddf5fbd137c1f02bfaed5223\"\u003e\u003ccode\u003e4ff61af\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/804f4725e1a27b1425c8aabcf7312ceb11c3a07d\"\u003e\u003ccode\u003e804f472\u003c/code\u003e\u003c/a\u003e FIX make func_code stable across processes when the source is unavailable (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/65cc49da449f70ffa73bc7c3c57fd418392f9...\n\n_Description has been truncated_","html_url":"https://github.com/NguyenPhan161206/vibe_trading/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NguyenPhan161206%2Fvibe_trading/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"}},{"old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.2","update_type":null,"path":null,"pr_created_at":"2026-09-04T02:02:44.000Z","version_change":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 → !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.2","issue":{"uuid":"5343342408","node_id":"PR_kwDOBFHcf88AAAABCI4ocA","number":2708,"state":"closed","title":"Update websocket-client requirement from !=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 to !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.2","user":"dependabot[bot]","labels":["cncf-cla: yes","size/XS","do-not-merge/release-note-label-needed","needs-kind","dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-09-08T01:31:53.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T02:02:44.000Z","updated_at":"2026-09-08T01:32:03.000Z","time_to_close":343749,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v0.32.0...v1.9.2\"\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/kubernetes-client/python/pull/2708","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-client%2Fpython/issues/2708","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2708/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-03T23:08:09.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5342335029","node_id":"PR_kwDOThpxhc8AAAABCIG1Aw","number":19,"state":"closed","title":"chore(deps): bump the pip-minor-patch group across 1 directory with 70 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-10T23:04:24.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-03T23:08:09.000Z","updated_at":"2026-09-10T23:04:25.000Z","time_to_close":604575,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip-minor-patch","update_count":70,"packages":[{"name":"langchain","old_version":"1.3.13","new_version":"1.3.18","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-core","old_version":"1.4.9","new_version":"1.6.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langchain-openai","old_version":"1.3.5","new_version":"1.6.0","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langgraph","old_version":"1.2.9","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.1.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pypdfium2","old_version":"5.11.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"duckdb","old_version":"1.5.4","new_version":"1.5.5","repository_url":"https://github.com/duckdb/duckdb-python"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"yfinance","old_version":"1.5.1","new_version":"1.7.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"akshare","old_version":"1.18.64","new_version":"1.18.94","repository_url":"https://github.com/akfamily/akshare"},{"name":"ccxt","old_version":"4.5.64","new_version":"4.5.76","repository_url":"https://github.com/ccxt/ccxt"},{"name":"fastapi","old_version":"0.139.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.51.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"sse-starlette","old_version":"3.4.5","new_version":"3.4.8","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"ddgs","old_version":"9.14.4","new_version":"9.16.0","repository_url":"https://github.com/deedy5/ddgs"},{"name":"matplotlib","old_version":"3.11.0","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"aiohttp","old_version":"3.14.1","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"cachetools","old_version":"7.1.4","new_version":"7.1.8","repository_url":"https://github.com/tkem/cachetools"},{"name":"caio","old_version":"0.10.2","new_version":"0.12.2","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.1.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.9","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.2","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"curl-cffi","old_version":"0.15.0","new_version":"0.16.2","repository_url":"https://github.com/lexiforest/curl_cffi"},{"name":"cyclopts","old_version":"4.21.0","new_version":"4.23.3","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"fonttools","old_version":"4.63.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"griffelib","old_version":"2.1.0","new_version":"2.2.0"},{"name":"h2","old_version":"4.3.0","new_version":"4.4.1","repository_url":"https://github.com/python-hyper/h2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"joserfc","old_version":"1.7.3","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"kiwisolver","old_version":"1.5.0","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.18","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langgraph-sdk","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langsmith","old_version":"0.10.2","new_version":"0.11.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"llvmlite","old_version":"0.48.0","new_version":"0.49.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.2","repository_url":"https://github.com/lxml/lxml"},{"name":"narwhals","old_version":"2.23.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numba","old_version":"0.66.0","new_version":"0.67.0","repository_url":"https://github.com/numba/numba"},{"name":"opentelemetry-api","old_version":"1.43.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"peewee","old_version":"4.2.1","new_version":"4.4.0","repository_url":"https://github.com/coleifer/peewee"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.5","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"protobuf","old_version":"7.35.1","new_version":"7.36.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pydantic-core","old_version":"2.47.0","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyphen","old_version":"0.17.2","new_version":"0.18.1","repository_url":"https://github.com/Kozea/Pyphen"},{"name":"pytz","old_version":"2026.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"regex","old_version":"2026.7.10","new_version":"2026.8.31","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"simplejson","old_version":"4.1.1","new_version":"4.1.2","repository_url":"https://github.com/simplejson/simplejson"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tiktoken","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"},{"name":"tqdm","old_version":"4.68.4","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"wcwidth","old_version":"0.8.2","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"yarl","old_version":"1.24.2","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 70 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [langchain](https://github.com/langchain-ai/langchain) | `1.3.13` | `1.3.18` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.9` | `1.6.1` |\n| [langchain-openai](https://github.com/langchain-ai/langchain) | `1.3.5` | `1.6.0` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.9` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.1.1` | `4.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.11.0` | `5.13.0` |\n| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.4` | `1.5.5` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.1` | `1.7.0` |\n| [akshare](https://github.com/akfamily/akshare) | `1.18.64` | `1.18.94` |\n| [ccxt](https://github.com/ccxt/ccxt) | `4.5.64` | `4.5.76` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.141.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.51.0` | `0.52.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.4.5` | `3.4.8` |\n| [ddgs](https://github.com/deedy5/ddgs) | `9.14.4` | `9.16.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.0` | `3.11.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.14.1` | `3.14.3` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.4` | `7.1.8` |\n| [caio](https://github.com/mosquito/caio) | `0.10.2` | `0.12.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.1.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [curl-cffi](https://github.com/lexiforest/curl_cffi) | `0.15.0` | `0.16.2` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.21.0` | `4.23.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.63.0` | `4.64.0` |\n| griffelib | `2.1.0` | `2.2.0` |\n| [h2](https://github.com/python-hyper/h2) | `4.3.0` | `4.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.3` | `1.7.5` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.5.0` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.18` | `0.0.19` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.10.2` | `0.11.2` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.48.0` | `0.49.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.2` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.23.0` | `2.25.0` |\n| [numba](https://github.com/numba/numba) | `0.66.0` | `0.67.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.43.0` | `1.44.0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [peewee](https://github.com/coleifer/peewee) | `4.2.1` | `4.4.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.5` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.47.0` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyphen](https://github.com/Kozea/Pyphen) | `0.17.2` | `0.18.1` |\n| [pytz](https://github.com/stub42/pytz) | `2026.2` | `2026.3.post1` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.7.10` | `2026.8.31` |\n| [simplejson](https://github.com/simplejson/simplejson) | `4.1.1` | `4.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.13.0` | `0.14.0` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.4` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.8.2` | `0.8.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.24.2` | `1.24.5` |\n\n\nUpdates `langchain` from 1.3.13 to 1.3.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain==1.3.18\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.17\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\nfix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.17\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.16\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.17 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39893\"\u003e#39893\u003c/a\u003e)\nfix(langchain): frame custom HITL rejection reasons (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39773\"\u003e#39773\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.16\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.15\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.16 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39806\"\u003e#39806\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfeat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39754\"\u003e#39754\u003c/a\u003e)\nfix(langchain): re-raise non-retryable exceptions in ModelRetryMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38960\"\u003e#38960\u003c/a\u003e)\nchore(langchain): update docs on error handling for json schema (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39632\"\u003e#39632\u003c/a\u003e)\nfix(langchain): preserve final repeated schema ordering (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39284\"\u003e#39284\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain==1.3.15\u003c/h2\u003e\n\u003cp\u003eChanges since langchain==1.3.14\u003c/p\u003e\n\u003cp\u003erelease(langchain): 1.3.15 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39595\"\u003e#39595\u003c/a\u003e)\nfeat(langchain): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eAgentMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38910\"\u003e#38910\u003c/a\u003e)\nchore(langchain): fix type errors in tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39589\"\u003e#39589\u003c/a\u003e)\nchore: bump h2 from 4.3.0 to 4.4.1 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39324\"\u003e#39324\u003c/a\u003e)\nfix(langchain): preserve history on \u003ccode\u003eSummarizationMiddleware\u003c/code\u003e summary failure (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39268\"\u003e#39268\u003c/a\u003e)\nfix(langchain): handle import error in \u003ccode\u003eLLMToolEmulator\u003c/code\u003e by \u003ccode\u003emodel\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39290\"\u003e#39290\u003c/a\u003e)\nrefactor(langchain): update doc strings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39305\"\u003e#39305\u003c/a\u003e)\nfeat(langchain): add \u003ccode\u003estate_schema\u003c/code\u003e param to \u003ccode\u003ewrap_tool_call\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39292\"\u003e#39292\u003c/a\u003e)\nfix(langchain): re-export \u003ccode\u003ePIIMatch\u003c/code\u003e from \u003ccode\u003emiddleware\u003c/code\u003e package (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39291\"\u003e#39291\u003c/a\u003e)\nfix(langchain): restrict narrowed \u003ccode\u003eToolStrategy\u003c/code\u003e in bound tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39259\"\u003e#39259\u003c/a\u003e)\nfeat(langchain): filter internal middleware model calls from \u003ccode\u003emessages\u003c/code\u003e projection (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39252\"\u003e#39252\u003c/a\u003e)\nchore: bump aiohttp from 3.14.1 to 3.14.3 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39242\"\u003e#39242\u003c/a\u003e)\nchore: bump cryptography from 48.0.1 to 50.0.0 in /libs/langchain_v1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39240\"\u003e#39240\u003c/a\u003e)\ntest(langchain): regression test for shell tool + checkpointer msgpack error (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39267\"\u003e#39267\u003c/a\u003e)\nfix(langchain): handle malformed structured-output responses (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39245\"\u003e#39245\u003c/a\u003e)\nfix(langchain): prevent orphaned \u003ccode\u003etool_calls\u003c/code\u003e in \u003ccode\u003eToolCallLimitMiddleware\u003c/code\u003e end behavior (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39258\"\u003e#39258\u003c/a\u003e)\nfix(langchain): add aliases for bedrock mantle chat models (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39260\"\u003e#39260\u003c/a\u003e)\nfeat(langchain): add LangSmith provider to \u003ccode\u003einit_chat_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39224\"\u003e#39224\u003c/a\u003e)\nfix(langchain): clear stale \u003ccode\u003estructured_response\u003c/code\u003e between checkpointed turns (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39248\"\u003e#39248\u003c/a\u003e)\nfix(langchain): stop HITL approval gates from silently failing open (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39247\"\u003e#39247\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(langchain): propagate model middleware control flow (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39199\"\u003e#39199\u003c/a\u003e)\nfix(langchain): update Anthropic config test (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39172\"\u003e#39172\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/513e425fc0138fe5383ab28b638d5fc959b53f3f\"\u003e\u003ccode\u003e513e425\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39954\"\u003e#39954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/fd2fbd702bf429f820587584a4e5cdfbe57d5d34\"\u003e\u003ccode\u003efd2fbd7\u003c/code\u003e\u003c/a\u003e feat(anthropic): support 1.0 sdk (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39938\"\u003e#39938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b0fb33f919dd868f3db6262d883a84eb454697b0\"\u003e\u003ccode\u003eb0fb33f\u003c/code\u003e\u003c/a\u003e fix(perplexity): map Responses API cache tokens into input_token_details (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39\"\u003e#39\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain==1.3.13...langchain==1.3.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.4.9 to 1.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.0\u003c/p\u003e\n\u003cp\u003erevert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\nrelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\nfix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\nfix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\nchore(deps): bump minor and patch dependencies (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39869\"\u003e#39869\u003c/a\u003e)\nrelease(core): 1.6.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39832\"\u003e#39832\u003c/a\u003e)\nfeat(core): propagate gateway information on error path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39829\"\u003e#39829\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.6\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\nfix(core): resolve postponed annotations in \u003ccode\u003eStructuredTool._injected_args_keys\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39602\"\u003e#39602\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\nfix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict mappings (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39750\"\u003e#39750\u003c/a\u003e)\nfix(core): make subprocess and temporary file tests portable on Windows (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39664\"\u003e#39664\u003c/a\u003e)\nfix(core): fail fast when tool schemas can't resolve forward refs during serialization (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39570\"\u003e#39570\u003c/a\u003e)\ntest(core): avoid version-dependent runnable snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39705\"\u003e#39705\u003c/a\u003e)\nfix(core): require all nested properties for strict tool schemas (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39306\"\u003e#39306\u003c/a\u003e)\nfix(core): remove stale sync-stream \u003ccode\u003exfail\u003c/code\u003e [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39720\"\u003e#39720\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39723\"\u003e#39723\u003c/a\u003e)\nperf(core): Lazily import transformers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38037\"\u003e#38037\u003c/a\u003e)\nfix(core): accept non-dict Mapping values in mustache templates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39680\"\u003e#39680\u003c/a\u003e)\ndocs(core): clarify \u003ccode\u003eRunnable\u003c/code\u003e pipe coercion [closes \u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39075\"\u003e#39075\u003c/a\u003e] (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39707\"\u003e#39707\u003c/a\u003e)\nfix(core): finalize chain-group runs on \u003ccode\u003eBaseException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39699\"\u003e#39699\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.6\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.5\u003c/p\u003e\n\u003cp\u003echore(core): release 1.5.6 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39704\"\u003e#39704\u003c/a\u003e)\nfeat(core): incorporate gateway metadata to traces (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39703\"\u003e#39703\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-core==1.5.5\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.5.4\u003c/p\u003e\n\u003cp\u003erelease(core): 1.5.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39655\"\u003e#39655\u003c/a\u003e)\nfix(core): make abatch_iterate consistent with batch_iterate for None and zero size (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39367\"\u003e#39367\u003c/a\u003e)\nfix(core): respect pydantic aliases when validating tool inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39572\"\u003e#39572\u003c/a\u003e)\nfix(core): issues in merging chunks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39535\"\u003e#39535\u003c/a\u003e)\nfix(core): handle v1 base model validation in async path (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39576\"\u003e#39576\u003c/a\u003e)\nfix(core): handle tool descriptions for infer_schema=False (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39573\"\u003e#39573\u003c/a\u003e)\nfix(core): clear usage metadata callback on exceptions in context manager (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39616\"\u003e#39616\u003c/a\u003e)\nfix(core): handle falsy LLM and chat model caches (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39283\"\u003e#39283\u003c/a\u003e)\nchore(core): add httpx as an explicit dep (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39612\"\u003e#39612\u003c/a\u003e)\nfix(core): preserve non-str/non-dict items in \u003ccode\u003eDictPromptTemplate\u003c/code\u003e list values (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39588\"\u003e#39588\u003c/a\u003e)\nfix(core): raise ValueError when explicit tool_outputs length mismatches tool_calls in tool_example_to_messages (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39142\"\u003e#39142\u003c/a\u003e)\nfix(core): guard malformed Anthropic content blocks (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38670\"\u003e#38670\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46\"\u003e\u003ccode\u003e4fe9d30\u003c/code\u003e\u003c/a\u003e chore(openai): fix tests (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39972\"\u003e#39972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c\"\u003e\u003ccode\u003e8fa38dc\u003c/code\u003e\u003c/a\u003e revert: release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39971\"\u003e#39971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372\"\u003e\u003ccode\u003e122030d\u003c/code\u003e\u003c/a\u003e release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39967\"\u003e#39967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b\"\u003e\u003ccode\u003e7d4b42b\u003c/code\u003e\u003c/a\u003e release(langchain): 1.3.18 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39966\"\u003e#39966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83\"\u003e\u003ccode\u003e4a66e35\u003c/code\u003e\u003c/a\u003e fix(langchain): preserve content-block shape in PIIMiddleware redaction (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39894\"\u003e#39894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3\"\u003e\u003ccode\u003e38e2113\u003c/code\u003e\u003c/a\u003e fix(core): shore up indexing in genai v1 streaming content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39964\"\u003e#39964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e\"\u003e\u003ccode\u003e13b1b2f\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003eStructuredTool\u003c/code\u003e JSON-serializable (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39631\"\u003e#39631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26\"\u003e\u003ccode\u003e3b3b308\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4\"\u003e\u003ccode\u003ee3f6adf\u003c/code\u003e\u003c/a\u003e feat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; `updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa\"\u003e\u003ccode\u003ec253f54\u003c/code\u003e\u003c/a\u003e fix(openai): correct \u003ccode\u003ereasoning_effort_levels\u003c/code\u003e for gpt-5 and gpt-5.1 profiles...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.9...langchain-core==1.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-openai` from 1.3.5 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-openai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-openai==1.6.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.2\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\nfeat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\nfix(openai): raise clear error on unexpected response type in \u003ccode\u003e_create_chat_result\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39731\"\u003e#39731\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-openai==1.5.1\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39719\"\u003e#39719\u003c/a\u003e)\nfix(openai): preserve reasoning item boundaries (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39278\"\u003e#39278\u003c/a\u003e)\nrelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-openai==1.5.2a1\u003c/h2\u003e\n\u003cp\u003eInitial release\u003c/p\u003e\n\u003cp\u003erelease(openai): 1.5.2a1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39709\"\u003e#39709\u003c/a\u003e)\nfeat(openai): extract gateway metadata from response headers when available (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39706\"\u003e#39706\u003c/a\u003e)\nchore(openai): update snapshots (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39657\"\u003e#39657\u003c/a\u003e)\nfix(openai): support o-series models in \u003ccode\u003eget_num_tokens_from_messages\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38710\"\u003e#38710\u003c/a\u003e)\nrelease(openai): 1.5.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39653\"\u003e#39653\u003c/a\u003e)\nfix(openai): preserve streamed encrypted reasoning (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39635\"\u003e#39635\u003c/a\u003e)\nchore(infra): support langsmith gateway in CI (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39651\"\u003e#39651\u003c/a\u003e)\nrelease(openai): 1.5.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39629\"\u003e#39629\u003c/a\u003e)\nfeat(openai): support openai 3.0 SDK (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39613\"\u003e#39613\u003c/a\u003e)\nchore(partners): bump langgraph floor in openai and huggingface lockfiles (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39617\"\u003e#39617\u003c/a\u003e)\nrelease(openai): 1.4.3 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39485\"\u003e#39485\u003c/a\u003e)\nfix(openai): filter invalid tool calls from content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39366\"\u003e#39366\u003c/a\u003e)\nchore(openai): update guidance for responses API for OpenAI-compatible providers (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39327\"\u003e#39327\u003c/a\u003e)\nchore(openai): update docstring for \u003ccode\u003einclude_response_headers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39326\"\u003e#39326\u003c/a\u003e)\nrelease(openai): 1.4.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39322\"\u003e#39322\u003c/a\u003e)\nfix(openai): handle \u003ccode\u003eContextWindowExceededError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39300\"\u003e#39300\u003c/a\u003e)\nchore: bump the minor-and-patch group across 3 directories with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39187\"\u003e#39187\u003c/a\u003e)\nfix(openai): filter langchain-generated content block IDs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39209\"\u003e#39209\u003c/a\u003e)\nfix(openai): preserve Responses \u003ccode\u003etext\u003c/code\u003e options (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39204\"\u003e#39204\u003c/a\u003e)\nfix(openai): redact MCP \u003ccode\u003eauthorization\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39155\"\u003e#39155\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39050\"\u003e#39050\u003c/a\u003e)\nrelease(openai): 1.4.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39045\"\u003e#39045\u003c/a\u003e)\nfeat(anthropic,fireworks,openai): support langsmith gateway through env var (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38742\"\u003e#38742\u003c/a\u003e)\nfix(openai): correct \u003ccode\u003egpt-5.3-chat-latest\u003c/code\u003e profile (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39009\"\u003e#39009\u003c/a\u003e)\nrelease(openai): 1.4.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38983\"\u003e#38983\u003c/a\u003e)\nchore: bump pillow from 12.2.0 to 12.3.0 in /libs/partners/openai (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38999\"\u003e#38999\u003c/a\u003e)\nfeat(core): add \u003ccode\u003ereasoning_effort\u003c/code\u003e as a standard chat model parameter (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38887\"\u003e#38887\u003c/a\u003e)\nchore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38797\"\u003e#38797\u003c/a\u003e)\nrelease(openai): 1.3.5 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38785\"\u003e#38785\u003c/a\u003e)\nfeat(openai): support explicit prompt caching (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/38762\"\u003e#38762\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3478c28ef21435162cb67abbd2aaef67c7cd8981\"\u003e\u003ccode\u003e3478c28\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39763\"\u003e#39763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/420dfc94516f57a4d8662132a55bc532afbc6045\"\u003e\u003ccode\u003e420dfc9\u003c/code\u003e\u003c/a\u003e release(openai): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39762\"\u003e#39762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/85602c3676fbd51e098a01d7c66638719f529f84\"\u003e\u003ccode\u003e85602c3\u003c/code\u003e\u003c/a\u003e release(core): 1.6.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39760\"\u003e#39760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/5c3538e83a24eaf819ecec066773a232dcd4a8e6\"\u003e\u003ccode\u003e5c3538e\u003c/code\u003e\u003c/a\u003e fix(core): resolve postponed annotations in `StructuredTool._injected_args_ke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/9984a87fa5a6971c76cb12fc75b37ed74286b740\"\u003e\u003ccode\u003e9984a87\u003c/code\u003e\u003c/a\u003e feat(core): add standard model exception types (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39538\"\u003e#39538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/b3e9eef13c23c3a048f9846e1592b658f85f5f94\"\u003e\u003ccode\u003eb3e9eef\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39751\"\u003e#39751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/ded2a1fb3c06a9562d9079e42099020ecaca4060\"\u003e\u003ccode\u003eded2a1f\u003c/code\u003e\u003c/a\u003e fix(core): allow deserializing \u003ccode\u003eRunnablePick\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39753\"\u003e#39753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/04ae7447d72e61841905a41b309856c5191452fb\"\u003e\u003ccode\u003e04ae744\u003c/code\u003e\u003c/a\u003e fix(core): make \u003ccode\u003econvert_to_openai_function\u003c/code\u003e handle callables and non-dict ma...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/37f266278d780cd7ebdfbf1891ba92066192d687\"\u003e\u003ccode\u003e37f2662\u003c/code\u003e\u003c/a\u003e feat(langchain): support custom token_counter in ContextEditingMiddleware (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/3\"\u003e#3\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/2019bf5ebe50324c548f67c2666a804343f9b772\"\u003e\u003ccode\u003e2019bf5\u003c/code\u003e\u003c/a\u003e fix(openai): raise clear error on unexpected response type in `_create_chat_r...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-openai==1.3.5...langchain-openai==1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph` from 1.2.9 to 1.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph==1.2.11\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 7 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8533\"\u003e#8533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group across 1 directory with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8532\"\u003e#8532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8502\"\u003e#8502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump cryptography from 48.0.1 to 50.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8528\"\u003e#8528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-sqlite): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8481\"\u003e#8481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erelease(checkpoint-postgres): 3.1.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8480\"\u003e#8480\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003elanggraph==1.2.10\u003c/h2\u003e\n\u003cp\u003eChanges since 1.2.9\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(langgraph): 1.2.10 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8462\"\u003e#8462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump jupyterlab from 4.5.9 to 4.5.10 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8440\"\u003e#8440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump setuptools from 80.9.0 to 83.0.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8435\"\u003e#8435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): type v3 stream_events return and native projections (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8389\"\u003e#8389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert(langgraph): delete TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8403\"\u003e#8403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): drop tags from TracePolicy (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8402\"\u003e#8402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8362\"\u003e#8362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump mistune from 3.2.1 to 3.3.0 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8317\"\u003e#8317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump soupsieve from 2.8.1 to 2.8.4 in /libs/langgraph (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8318\"\u003e#8318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(cli): allow langgraph-api versions up to 1.0.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8319\"\u003e#8319\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/644815f9e5bc52ad8f7a5227a456227e9c3e639b\"\u003e\u003ccode\u003e644815f\u003c/code\u003e\u003c/a\u003e release(langgraph): 1.2.11 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8595\"\u003e#8595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/7d6b5790ba84ce38c26f27a533d8419a31103c36\"\u003e\u003ccode\u003e7d6b579\u003c/code\u003e\u003c/a\u003e feat(langgraph): expose \u003ccode\u003etrace_policy\u003c/code\u003e on \u003ccode\u003eadd_node\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8523\"\u003e#8523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d56666f7fbf0d380ad84cdf0cbe5aa48ab0cc086\"\u003e\u003ccode\u003ed56666f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 7 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/6a2822d3c77dad49a96718de73095f18717728be\"\u003e\u003ccode\u003e6a2822d\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group across 1 directory with 5 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fde3068970679184b68d3d068a92c83c966a4888\"\u003e\u003ccode\u003efde3068\u003c/code\u003e\u003c/a\u003e release(checkpoint-postgres): 3.1.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8565\"\u003e#8565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/1.2.9...1.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langgraph-checkpoint` from 4.1.1 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langgraph/releases\"\u003elanggraph-checkpoint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elanggraph-checkpoint==4.2.0\u003c/h2\u003e\n\u003cp\u003eChanges since checkpoint==4.1.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erelease(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(checkpoint): collect writes at plain-value seed in delta channel history (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8526\"\u003e#8526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8490\"\u003e#8490\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(checkpoint,checkpoint-postgres): add opt-in omit_expired to skip expired rows on read (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8354\"\u003e#8354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 5 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8248\"\u003e#8248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8173\"\u003e#8173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: standardize package \u003ccode\u003eREADME.md\u003c/code\u003e structure (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8064\"\u003e#8064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: migrate Python type checking to ty (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8002\"\u003e#8002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump the major group in /libs/checkpoint with 2 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7967\"\u003e#7967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the minor-and-patch group in /libs/checkpoint with 3 updates (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/7960\"\u003e#7960\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f55e77274dad40897ef7b2d52cc7c0b85b792247\"\u003e\u003ccode\u003ef55e772\u003c/code\u003e\u003c/a\u003e release(checkpoint): 4.2.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8563\"\u003e#8563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/a90ab4435853b8a5b6f82b20220b4c76af0e46d1\"\u003e\u003ccode\u003ea90ab44\u003c/code\u003e\u003c/a\u003e fix(checkpoint): collect writes at plain-value seed in delta channel history ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/ea5f9cc9fb8c4b123769daab4753af34de29b1e9\"\u003e\u003ccode\u003eea5f9cc\u003c/code\u003e\u003c/a\u003e chore: enforce PLC0415 in tests for the remaining packages (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8547\"\u003e#8547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/36a505ac65e956da09e93cc753609635a511047e\"\u003e\u003ccode\u003e36a505a\u003c/code\u003e\u003c/a\u003e test(checkpoint-postgres,checkpoint-sqlite): run the conformance suite (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8537\"\u003e#8537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/d569e18f4bd78b7652cb88c84b8dd098057e4f7d\"\u003e\u003ccode\u003ed569e18\u003c/code\u003e\u003c/a\u003e fix(checkpoint-postgres): find plain-value seeds when walking delta history (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/f22af6248c93df08b553e9a264f6367797e0fddb\"\u003e\u003ccode\u003ef22af62\u003c/code\u003e\u003c/a\u003e chore: enable RUF100 and clear unused noqa directives (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8546\"\u003e#8546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/658541c4960f329864a2523fc7d52427e8190bed\"\u003e\u003ccode\u003e658541c\u003c/code\u003e\u003c/a\u003e chore(checkpoint-postgres,checkpoint-sqlite): enable PLC0415 lint rule (\u003ca href=\"https://redirect.github.com/langchain-ai/langgraph/issues/8540\"\u003e#8540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/fb3d5f0399222504e015fe959e0e79fdc6e00a65\"\u003e\u003ccode\u003efb3d5f0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/01521c1b1cc4c035f64b9be40f2913285128f526\"\u003e\u003ccode\u003e01521c1\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langgraph/commit/cd62febcfae628d0930d1f7d3cb3b5919d4b800f\"\u003e\u003ccode\u003ecd62feb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 update...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langgraph/compare/checkpoint==4.1.1...checkpoint==4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdfium2` from 5.11.0 to 5.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003ch3\u003eSummary\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExperimental \u003ccode\u003epyemscripten_2026_0_wasm32\u003c/code\u003e (Pyodide) build support added. \u003cem\u003eHowever, the resulting builds are flaky at runtime and subject to various types of random crashes. Freezes on shutdown have also been observed.\u003c/em\u003e\nWhile these issues persist, PyEmscripten wheels will not be uploaded to PyPI, but they are included in the release process and can be downloaded from GitHub on an experimental basis. If you can help track down and fix these issues, please reach out.\nNote: Our PyEmscripten wheels are bigger than usual, as they are built with debug symbols (a non-debug build is not considered useful at this stage).\u003c/li\u003e\n\u003cli\u003eFixed compatibility with Python 3.6 and 3.7.\n\u003cul\u003e\n\u003cli\u003eRuntime support was inadvertently broken due to a faulty cached property backport which held only one cache per class, not per instance as should have been.\nThe accidental loss of caches broke key assumptions of our autoclose logic, which relies on \u003ccode\u003ecached_property\u003c/code\u003e since 5.8.0. (Earlier versions that did not make extensive use of cached properties might work but have not been explicitly tested.)\u003c/li\u003e\n\u003cli\u003eThis release replaces both \u003ccode\u003efunctools.cached_property\u003c/code\u003e and the faulty \u003ccode\u003efunctools.lru_cache()\u003c/code\u003e based backport with our own, backward compatible \u003ccode\u003ecached_property\u003c/code\u003e implementation along with thorough documentation.\u003c/li\u003e\n\u003cli\u003eAlso, fixed setup (i.e. source installation) with Python 3.6 and its max available setup dependency versions (that is, \u003ccode\u003esetuptools\u003c/code\u003e 59). This had probably been broken for a long time. (A few non-breaking issues remain, e.g. for some reason we end up with a \u003ccode\u003epurelib\u003c/code\u003e directory, but it should be \u003ccode\u003eplatlib\u003c/code\u003e.)\u003c/li\u003e\n\u003cli\u003eBear in mind that ctypesgen continues to require Python \u003ccode\u003e\u0026gt;=3.8\u003c/code\u003e at this time (3.6 compat not being a priority in that case), but you can install with \u003ccode\u003e--no-build-isolation\u003c/code\u003e and let the reference bindings be used, or try adding ctypesgen's \u003ccode\u003esrc/\u003c/code\u003e to \u003ccode\u003ePYTHONPATH\u003c/code\u003e to bypass setup, and see how it goes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNote: We do not plan to (and practically cannot) keep up compatibility with outdated Python versions indefinitely.\u003c/strong\u003e In particular, setup compatibility may be dropped sooner or later in favor of contemporary Python packaging concepts, like migrating as much as possible to \u003ccode\u003epyproject.toml\u003c/code\u003e. That said, we are happy to restore compatibility at this point, and fix any \u003cem\u003eunintentional\u003c/em\u003e breakage.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eMANIFEST.in\u003c/code\u003e missing Windows spoof headers, which resulted in subtly incorrect bindings when installing from an sdist on Windows, as seen in test failures. (Release wheels have been unaffected and passed the test suite, so this issue went unnoticed for a while.)\u003c/li\u003e\n\u003cli\u003eBumped \u003ccode\u003egn-dist\u003c/code\u003e from \u003ccode\u003e2407.1\u003c/code\u003e to \u003ccode\u003e2407.3\u003c/code\u003e. Made its setup python 3.6 compatible likewise (wheels should have worked before now). Changed versioning and release process so that CI no longer needs to push to the repository (may eventually become a blueprint for pypdfium2 itself). More documentation added, including \u003ccode\u003emanylinux2014\u003c/code\u003e POC.\u003c/li\u003e\n\u003cli\u003eInternal improvements (non-exhaustive):\n\u003cul\u003e\n\u003cli\u003eProperly clean up \u003ccode\u003e*.egg-info/\u003c/code\u003e and \u003ccode\u003ebuild/\u003c/code\u003e before packaging, to avoid mad file inclusion bugs (ran into this while working on setup include rules).\u003c/li\u003e\n\u003cli\u003eMigrated from requirements files to PEP 735 dependency groups (\u003ccode\u003epyproject.toml\u003c/code\u003e).\nRecent enough \u003ccode\u003epip\u003c/code\u003e should be available to Python \u0026gt;= 3.9. For compatibility with older versions, feel free to use \u003ccode\u003e./utils/misc/install_dep_group.py\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eApplied dependency cooldowns to internal callers of \u003ccode\u003epip install\u003c/code\u003e. Always use virtual environments in CI. Use lockfiles in sensitive areas (e.g. publish jobs).\u003c/li\u003e\n\u003cli\u003eRearranged \u0026amp; improved utilities. Cleaner distinction between \u003ccode\u003esetupsrc/\u003c/code\u003e and \u003ccode\u003eutils/\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eWork around persistent i686 container network issues by downgrading host runner to \u003ccode\u003eubuntu-24.04\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eLet \u003ccode\u003esetupsrc/\u003c/code\u003e share code from \u003ccode\u003esrc/\u003c/code\u003e through a \u003ccode\u003epypdfium2_cfg._shared\u003c/code\u003e submodule that can be added to \u003ccode\u003esys.path\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\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, android_arm64_v8a, android_armeabi_v7a]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSBLD: \u003ccode\u003e[manylinux_mipsle]\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\u003cblockquote\u003e\n\u003cp\u003e[!CAUTION]\nThe following builds are affected by known, major issues (e.g. endianness bugs, crashes, freezes) and are \u003cstrong\u003eNOT\u003c/strong\u003e considered ready for production use:\n\u003ccode\u003e[manylinux_s390x, musllinux_s390x, pyodide_wasm32]\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eCommit logs\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eCommits between \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.12.1\"\u003e\u003ccode\u003e5.12.1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/tree/5.13.0\"\u003e\u003ccode\u003e5.13.0\u003c/code\u003e\u003c/a\u003e (latest commit first):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea4659102\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de35\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367a\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e78\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce0\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd619\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\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/a4659102e4c258ee18c661232c0f9763f6c85ad0\"\u003e\u003ccode\u003ea465910\u003c/code\u003e\u003c/a\u003e [autorelease main] update 5.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/9094de358328ae44236c5cb401a8155311e450a0\"\u003e\u003ccode\u003e9094de3\u003c/code\u003e\u003c/a\u003e continue on changelog/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b89e367a5dec13b99ec20f0beed137146a75bbcf\"\u003e\u003ccode\u003eb89e367\u003c/code\u003e\u003c/a\u003e git_net_additions.py: minor tweaks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/57157e789f2573f6d4b61e58e8c7a778674afdd1\"\u003e\u003ccode\u003e57157e7\u003c/code\u003e\u003c/a\u003e readme: don't overdo admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/033d5ce066aba79233d4f406678bbac057ad6011\"\u003e\u003ccode\u003e033d5ce\u003c/code\u003e\u003c/a\u003e changelog: less waffle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/5afbd6193eff87df05153148116a82d9f7cd7fa3\"\u003e\u003ccode\u003e5afbd61\u003c/code\u003e\u003c/a\u003e install_buildtools: use compat function for dependency group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/3282e36375fd6e139f885ff634747ab0fe643e66\"\u003e\u003ccode\u003e3282e36\u003c/code\u003e\u003c/a\u003e Add zizmor to check step\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/07b84aaaa9c4c44429e0316c15c179b64c004d0a\"\u003e\u003ccode\u003e07b84aa\u003c/code\u003e\u003c/a\u003e Progress changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/6ec38d2aa64d59f02892ddf07f601bbdb5bbf53e\"\u003e\u003ccode\u003e6ec38d2\u003c/code\u003e\u003c/a\u003e git_net_additions: further improve fallback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/commit/b5cdd7c7fcd2c01cd7744b6824f977bbbcb831c6\"\u003e\u003ccode\u003eb5cdd7c\u003c/code\u003e\u003c/a\u003e git_net_additions: fancier fallback for binary files\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypdfium2-team/pypdfium2/compare/5.11.0...5.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `duckdb` from 1.5.4 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/duckdb/duckdb-python/releases\"\u003educkdb's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.5.5 Bugfix Release\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/duckdb/duckdb/releases/tag/v1.5.5\"\u003eDuckDB's changelog\u003c/a\u003e for all changes in DuckDB.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed in DuckDB-Python\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix numpy deprecations by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/505\"\u003educkdb/duckdb-python#505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix alias of \u003ccode\u003eDuckDBPyRelation.query\u003c/code\u003e (closes \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/468\"\u003e#468\u003c/a\u003e) by \u003ca href=\"https://github.com/evertlammerts\"\u003e\u003ccode\u003e@​evertlammerts\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/pull/524\"\u003educkdb/duckdb-python#524\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/duckdb/duckdb-python/commit/b236c8194ed14c7a7c685e0534dde501cc855b3a\"\u003e\u003ccode\u003eb236c81\u003c/code\u003e\u003c/a\u003e Pin submodule to release hash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/e6a21c5b5d65d741fafd5a7389c93b8b86a7f249\"\u003e\u003ccode\u003ee6a21c5\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/f637bf42683030cbb108268581b866f13cb75031\"\u003e\u003ccode\u003ef637bf4\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/4c5c73c63381bd0587fd42b41093c8f0abe9f17c\"\u003e\u003ccode\u003e4c5c73c\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/6fae28061912de88c3c0f6e6ad6b2f3fc5ee5235\"\u003e\u003ccode\u003e6fae280\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/d8d5f0a36003c9090ea9480cdefa8f4b4122fece\"\u003e\u003ccode\u003ed8d5f0a\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/5d85f06025e83e3d2c69813acf4b2dc02bebc415\"\u003e\u003ccode\u003e5d85f06\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/c3cbf8d9ca87cea3dfbb89bfa2102ff4ec530f00\"\u003e\u003ccode\u003ec3cbf8d\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/93418b65c6ca821d71d9a091fb5218ad55d8a4eb\"\u003e\u003ccode\u003e93418b6\u003c/code\u003e\u003c/a\u003e Bump submodule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/duckdb/duckdb-python/commit/24f1915b590e1e663a14c0bff9e49bf28ebece9b\"\u003e\u003ccode\u003e24f1915\u003c/code\u003e\u003c/a\u003e [duckdb-labs bot] Bump DuckDB submodule (\u003ca href=\"https://redirect.github.com/duckdb/duckdb-python/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/duckdb/duckdb-python/compare/v1.5.4...v1.5.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joblib` from 1.5.3 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joblib/joblib/blob/main/CHANGES.rst\"\u003ejoblib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.6.0 - 2026/08/31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix caching of functions whose source cannot be retrieved, such as functions\ndefined in a notebook cell. Their identity fell back to\n\u003ccode\u003estr(hash(func.__code__))\u003c/code\u003e, which is salted by \u003ccode\u003ePYTHONHASHSEED\u003c/code\u003e and so\ndiffered between processes. A worker reading the \u003ccode\u003efunc_code.py\u003c/code\u003e written by\nanother one concluded that the function had changed and wiped the whole\ncache directory for it, discarding results computed by its peers.\n\u003ccode\u003efunc_code.py\u003c/code\u003e is also no longer rewritten in place, so a reader can no\nlonger catch it half-written and draw the same conclusion.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1694\"\u003ejoblib/joblib#1694\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop python 3.9 support. The oldest supported Python version\nis now Python 3.10.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1773\"\u003ejoblib/joblib#1773\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eeval_expr\u003c/code\u003e (used to evaluate the \u003ccode\u003epre_dispatch\u003c/code\u003e argument of\n\u003ccode\u003eParallel\u003c/code\u003e) to raise a \u003ccode\u003eValueError\u003c/code\u003e as documented instead of leaking a\n\u003ccode\u003eZeroDivisionError\u003c/code\u003e for expressions that divide or take a modulo by zero.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1810\"\u003ejoblib/joblib#1810\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eMemorizedResult\u003c/code\u003e now forwards \u003ccode\u003emmap_mode\u003c/code\u003e to its store backend, so a\ncached array reconstructed from a location is memory-mapped as requested\ninstead of being loaded fully into memory.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1799\"\u003ejoblib/joblib#1799\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUnvendor cloudpickle to more quickly benefit from maintenance releases\nof cloudpickle\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1775\"\u003ejoblib/joblib#1775\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMemory.cache\u003c/code\u003e for functions with a keyword-only argument that has a\ndefault declared before a keyword-only argument without a default.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1731\"\u003ejoblib/joblib#1731\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behavior of \u003ccode\u003efilter_args\u003c/code\u003e on some precise cases.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1800\"\u003ejoblib/joblib#1800\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a concurrency error that could happen with unordered generator.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1789\"\u003ejoblib/joblib#1789\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003edump()\u003c/code\u003e now accepts any input \u003ccode\u003eos.PathLike\u003c/code\u003e object to be consistent with\n\u003ccode\u003eload\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1812\"\u003ejoblib/joblib#1812\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe documentation now uses pydata sphinx theme. Furthermore, optional dependencies\n\u003ccode\u003etest\u003c/code\u003e and \u003ccode\u003edocs\u003c/code\u003e have been added to \u003ccode\u003epyproject.toml\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/joblib/joblib/pull/1774\"\u003ejoblib/joblib#1774\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVendor \u003ccode\u003eloky 3.6.0\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/joblib/joblib/commit/cd9a6b05fc4f2b1c8202eb62c4e863484f8cc099\"\u003e\u003ccode\u003ecd9a6b0\u003c/code\u003e\u003c/a\u003e Release 1.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1844\"\u003e#1844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/d873f972949d78166af6c945667c53f04d41fed6\"\u003e\u003ccode\u003ed873f97\u003c/code\u003e\u003c/a\u003e MNT vendor loky 3.6.0 (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/4ff61afd0849f18fddf5fbd137c1f02bfaed5223\"\u003e\u003ccode\u003e4ff61af\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/804f4725e1a27b1425c8aabcf7312ceb11c3a07d\"\u003e\u003ccode\u003e804f472\u003c/code\u003e\u003c/a\u003e FIX make func_code stable across processes when the source is unavailable (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joblib/joblib/commit/65cc49da449f70ffa73bc7c3c57fd418392f9993\"\u003e\u003ccode\u003e65cc49d\u003c/code\u003e\u003c/a\u003e TST Restore RNG sequence in hash compatibility test (\u003ca href=\"https://redirect.github.com/joblib/joblib/issues/1837\"\u003e#1837\u003c/a\u003e)\u003c/li\u003e\n\u003cli...\n\n_Description has been truncated_","html_url":"https://github.com/skywingsbruce-png/TYvibe/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/skywingsbruce-png%2FTYvibe/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"}},{"old_version":"1.9.0","new_version":"1.9.1","update_type":"patch","path":null,"pr_created_at":"2026-09-02T19:42:53.000Z","version_change":"1.9.0 → 1.9.1","issue":{"uuid":"5328436912","node_id":"PR_kwDOS9agj88AAAABB8971Q","number":357,"state":"closed","title":"chore(deps)(deps): Bump the python-minor-patch group across 1 directory with 93 updates","user":"dependabot[bot]","labels":["security","dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-05T05:50:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T19:42:53.000Z","updated_at":"2026-09-05T05:50:13.000Z","time_to_close":209238,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): Bump","group_name":"python-minor-patch","update_count":93,"packages":[{"name":"strands-agents-tools","old_version":"0.8.5","new_version":"0.8.7","repository_url":"https://github.com/strands-agents/tools"},{"name":"boto3","old_version":"1.43.32","new_version":"1.43.83","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.43.55","new_version":"1.43.83","repository_url":"https://github.com/boto/botocore"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.13.4","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"awslabs-aws-api-mcp-server","old_version":"1.4.1","new_version":"1.5.3","repository_url":"https://github.com/awslabs/mcp"},{"name":"awslabs-billing-cost-management-mcp-server","old_version":"0.0.29","new_version":"0.0.35","repository_url":"https://github.com/awslabs/mcp"},{"name":"pypdf","old_version":"6.16.1","new_version":"6.16.2","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"bedrock-agentcore-starter-toolkit","old_version":"0.3.11","new_version":"0.3.12","repository_url":"https://github.com/aws/bedrock-agentcore-starter-toolkit"},{"name":"uv","old_version":"0.12.0","new_version":"0.12.7","repository_url":"https://github.com/astral-sh/uv"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"aiofile","old_version":"3.11.1","new_version":"3.12.3","repository_url":"https://github.com/mosquito/aiofile"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.14.0","new_version":"4.14.2","repository_url":"https://github.com/agronholm/anyio"},{"name":"asgiref","old_version":"3.10.0","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"ast-serialize","old_version":"0.6.0","new_version":"0.8.0","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"authlib","old_version":"1.7.2","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"awscli","old_version":"1.45.55","new_version":"1.46.1","repository_url":"https://github.com/aws/aws-cli"},{"name":"awscrt","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/awslabs/aws-crt-python"},{"name":"bedrock-agentcore","old_version":"1.19.0","new_version":"1.22.0","repository_url":"https://github.com/aws/bedrock-agentcore-sdk-python"},{"name":"caio","old_version":"0.9.25","new_version":"0.12.2","repository_url":"https://github.com/mosquito/caio"},{"name":"certifi","old_version":"2026.6.17","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.11.0","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"cyclopts","old_version":"4.18.0","new_version":"4.23.3","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"dill","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/uqfoundation/dill"},{"name":"distlib","old_version":"0.4.0","new_version":"0.4.3","repository_url":"https://github.com/pypa/distlib"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"docutils","old_version":"0.19","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fastmcp","old_version":"3.4.2","new_version":"3.4.7","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"fastmcp-slim","old_version":"3.4.2","new_version":"3.4.7","repository_url":"https://github.com/PrefectHQ/fastmcp"},{"name":"filelock","old_version":"3.29.4","new_version":"3.32.4","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"googleapis-common-protos","old_version":"1.71.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"griffelib","old_version":"2.0.2","new_version":"2.2.0"},{"name":"grpcio","old_version":"1.81.1","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"identify","old_version":"2.6.15","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-functools","old_version":"4.5.0","new_version":"4.6.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"joserfc","old_version":"1.7.1","new_version":"1.7.5","repository_url":"https://github.com/authlib/joserfc"},{"name":"jsonschema-path","old_version":"0.3.4","new_version":"0.5.0","repository_url":"https://github.com/p1c2u/jsonschema-path"},{"name":"kubernetes","old_version":"36.0.2","new_version":"36.0.3","repository_url":"https://github.com/kubernetes-client/python"},{"name":"librt","old_version":"0.13.0","new_version":"0.15.0","repository_url":"https://github.com/mypyc/librt"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.2","repository_url":"https://github.com/lxml/lxml"},{"name":"markdownify","old_version":"1.2.0","new_version":"1.2.3","repository_url":"https://github.com/matthewwithanm/python-markdownify"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"ollama","old_version":"0.6.0","new_version":"0.6.2","repository_url":"https://github.com/ollama/ollama-python"},{"name":"opentelemetry-util-genai","old_version":"1.0b0","new_version":"1.1b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pathable","old_version":"0.4.4","new_version":"0.6.0","repository_url":"https://github.com/p1c2u/pathable"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.11.5","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pydantic-core","old_version":"2.46.4","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.11.0","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"python-discovery","old_version":"1.4.2","new_version":"1.6.0","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rich-rst","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/wasi-master/rich-rst"},{"name":"rpds-py","old_version":"2026.5.1","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"ruamel-yaml","old_version":"0.18.16","new_version":"0.19.1"},{"name":"s3transfer","old_version":"0.19.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"slack-bolt","old_version":"1.26.0","new_version":"1.30.0","repository_url":"https://github.com/slackapi/bolt-python"},{"name":"slack-sdk","old_version":"3.37.0","new_version":"3.44.0","repository_url":"https://github.com/slackapi/python-slack-sdk"},{"name":"soupsieve","old_version":"2.9.1","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlglot","old_version":"30.12.0","new_version":"30.17.0","repository_url":"https://github.com/tobymao/sqlglot"},{"name":"sse-starlette","old_version":"3.0.3","new_version":"3.4.8","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"strands-agents","old_version":"1.50.2","new_version":"1.54.0","repository_url":"https://github.com/strands-agents/harness-sdk"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"termcolor","old_version":"3.2.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"typer","old_version":"0.20.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.3","repository_url":"https://github.com/python/tzdata"},{"name":"uncalled-for","old_version":"0.3.2","new_version":"0.4.0","repository_url":"https://github.com/chrisguidry/uncalled-for"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"virtualenv","old_version":"21.5.1","new_version":"21.7.7","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"17.0.1","new_version":"17.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 93 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [strands-agents-tools](https://github.com/strands-agents/tools) | `0.8.5` | `0.8.7` |\n| [boto3](https://github.com/boto/boto3) | `1.43.32` | `1.43.83` |\n| [botocore](https://github.com/boto/botocore) | `1.43.55` | `1.43.83` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5` |\n| [awslabs-aws-api-mcp-server](https://github.com/awslabs/mcp) | `1.4.1` | `1.5.3` |\n| [awslabs-billing-cost-management-mcp-server](https://github.com/awslabs/mcp) | `0.0.29` | `0.0.35` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.1` | `6.16.2` |\n| [bedrock-agentcore-starter-toolkit](https://github.com/aws/bedrock-agentcore-starter-toolkit) | `0.3.11` | `0.3.12` |\n| [uv](https://github.com/astral-sh/uv) | `0.12.0` | `0.12.7` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [aiofile](https://github.com/mosquito/aiofile) | `3.11.1` | `3.12.3` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.0` | `4.14.2` |\n| [asgiref](https://github.com/django/asgiref) | `3.10.0` | `3.12.1` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.6.0` | `0.8.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.7.2` | `1.8.0` |\n| [awscli](https://github.com/aws/aws-cli) | `1.45.55` | `1.46.1` |\n| [awscrt](https://github.com/awslabs/aws-crt-python) | `0.36.0` | `0.36.2` |\n| [bedrock-agentcore](https://github.com/aws/bedrock-agentcore-sdk-python) | `1.19.0` | `1.22.0` |\n| [caio](https://github.com/mosquito/caio) | `0.9.25` | `0.12.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.11.0` | `7.16.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.18.0` | `4.23.3` |\n| [dill](https://github.com/uqfoundation/dill) | `0.4.0` | `0.4.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.4.0` | `0.4.3` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.23` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.4.2` | `3.4.7` |\n| [fastmcp-slim](https://github.com/PrefectHQ/fastmcp) | `3.4.2` | `3.4.7` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.29.4` | `3.32.4` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.71.0` | `1.75.2` |\n| griffelib | `2.0.2` | `2.2.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.81.1` | `1.83.1` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.15` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.5.0` | `4.6.0` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [joserfc](https://github.com/authlib/joserfc) | `1.7.1` | `1.7.5` |\n| [jsonschema-path](https://github.com/p1c2u/jsonschema-path) | `0.3.4` | `0.5.0` |\n| [kubernetes](https://github.com/kubernetes-client/python) | `36.0.2` | `36.0.3` |\n| [librt](https://github.com/mypyc/librt) | `0.13.0` | `0.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.2` |\n| [markdownify](https://github.com/matthewwithanm/python-markdownify) | `1.2.0` | `1.2.3` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.10.0` |\n| [ollama](https://github.com/ollama/ollama-python) | `0.6.0` | `0.6.2` |\n| [opentelemetry-util-genai](https://github.com/open-telemetry/opentelemetry-python-contrib) | `1.0b0` | `1.1b0` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pathable](https://github.com/p1c2u/pathable) | `0.4.4` | `0.6.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.11.5` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.4` | `2.48.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.11.0` | `2.15.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.4.2` | `1.6.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rich-rst](https://github.com/wasi-master/rich-rst) | `2.0.1` | `2.1.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `2026.5.1` | `2026.6.3` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| ruamel-yaml | `0.18.16` | `0.19.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.19.0` | `0.19.2` |\n| [slack-bolt](https://github.com/slackapi/bolt-python) | `1.26.0` | `1.30.0` |\n| [slack-sdk](https://github.com/slackapi/python-slack-sdk) | `3.37.0` | `3.44.0` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.9.1` | `2.9.2` |\n| [sqlglot](https://github.com/tobymao/sqlglot) | `30.12.0` | `30.17.0` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `3.0.3` | `3.4.8` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [strands-agents](https://github.com/strands-agents/harness-sdk) | `1.50.2` | `1.54.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.2.0` | `3.3.0` |\n| [typer](https://github.com/fastapi/typer) | `0.20.0` | `0.27.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [uncalled-for](https://github.com/chrisguidry/uncalled-for) | `0.3.2` | `0.4.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.5.1` | `21.7.7` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `17.0.1` | `17.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.3.0` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n\n\nUpdates `strands-agents-tools` from 0.8.5 to 0.8.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/strands-agents/tools/releases\"\u003estrands-agents-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.7\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.6..v0.8.7\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e) (1174bd6)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e) (c7c0c28)\u003c/li\u003e\n\u003cli\u003efix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e) (a47c204)\u003c/li\u003e\n\u003cli\u003efix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e) (2425040)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/549\"\u003e#549\u003c/a\u003e) (badcb5c)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👷 CI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/583\"\u003e#583\u003c/a\u003e) (29df37f)\u003c/li\u003e\n\u003cli\u003eci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/561\"\u003e#561\u003c/a\u003e) (836b0d5)\u003c/li\u003e\n\u003cli\u003eci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e) (db4cf76)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.6\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eAuto-drafted from commits in \u003ccode\u003ev0.8.5..v0.8.6\u003c/code\u003e, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: deprecate 11 tools superseded by SDK capability, MCP servers, or nothing (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/566\"\u003e#566\u003c/a\u003e) (bddfd3a)\u003c/li\u003e\n\u003cli\u003efeat: deprecate sleep, editor, and shell in favor of SDK vended tools (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/550\"\u003e#550\u003c/a\u003e) (45bf7b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(environment): drive value masking from environment variable (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/545\"\u003e#545\u003c/a\u003e) (60b6390)\u003c/li\u003e\n\u003cli\u003efix(use_aws): gate and redact ssm parameter and kms responses (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/520\"\u003e#520\u003c/a\u003e) (f924945)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: note that tools are experimental and require an independent security review (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/547\"\u003e#547\u003c/a\u003e) (6702a90)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e👷 CI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: update ruff requirement from \u0026lt;0.14.0,\u0026gt;=0.13.0 to \u0026gt;=0.13.0,\u0026lt;0.17.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/562\"\u003e#562\u003c/a\u003e) (b13980c)\u003c/li\u003e\n\u003cli\u003eci: update pre-commit requirement from \u0026lt;4.2.0,\u0026gt;=3.2.0 to \u0026gt;=3.2.0,\u0026lt;4.7.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/552\"\u003e#552\u003c/a\u003e) (95293c1)\u003c/li\u003e\n\u003cli\u003eci: update psutil requirement from \u0026lt;6.0.0,\u0026gt;=5.8.0 to \u0026gt;=5.8.0,\u0026lt;8.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/554\"\u003e#554\u003c/a\u003e) (c24fcc3)\u003c/li\u003e\n\u003cli\u003eci: update mypy requirement from \u0026lt;1.0.0,\u0026gt;=0.981 to \u0026gt;=0.981,\u0026lt;3.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/556\"\u003e#556\u003c/a\u003e) (d6a4a52)\u003c/li\u003e\n\u003cli\u003eci: align dependabot config with harness-sdk conventions (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/538\"\u003e#538\u003c/a\u003e) (a2d90e6)\u003c/li\u003e\n\u003cli\u003eci(integ): opt in to allow-unsafe-pr-checkout on fork PR checkout (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/548\"\u003e#548\u003c/a\u003e) (b27f672)\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/strands-agents/tools/commit/c7c0c28ad9e450a3193e49d7f25b1435a2bd5d99\"\u003e\u003ccode\u003ec7c0c28\u003c/code\u003e\u003c/a\u003e fix(calculator): reject cls= reroute in symbols() (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/585\"\u003e#585\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/29df37f0a6823125dcd685fda57b44e47841e8ec\"\u003e\u003ccode\u003e29df37f\u003c/code\u003e\u003c/a\u003e ci: update bedrock-agentcore requirement from \u0026lt;1.2.0,\u0026gt;=1.1.0 to \u0026gt;=1.1.0,\u0026lt;1.23...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/badcb5c42c1d601ceebb1bc732c6c7a2a2d53d8c\"\u003e\u003ccode\u003ebadcb5c\u003c/code\u003e\u003c/a\u003e docs(think): move developer content out of the LLM-facing docstring (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/320\"\u003e#320\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/a47c20443eadc223944eb134ea2f2d1b9c0638fc\"\u003e\u003ccode\u003ea47c204\u003c/code\u003e\u003c/a\u003e fix(mem0): lazy-load OpenSearch dependency (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/24250405149c69c1be1610f018e86417c1c4fc26\"\u003e\u003ccode\u003e2425040\u003c/code\u003e\u003c/a\u003e fix: gate side-effecting AWS actions behind use_aws consent prompt (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/584\"\u003e#584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/836b0d5615380a4d2b7f0897382db2eb5e695e95\"\u003e\u003ccode\u003e836b0d5\u003c/code\u003e\u003c/a\u003e ci: update opensearch-py requirement from \u0026lt;3.0.0,\u0026gt;=2.8.0 to \u0026gt;=2.8.0,\u0026lt;4.0.0 (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/1174bd667a66ec2b50ce0ee5e68dfb966334d407\"\u003e\u003ccode\u003e1174bd6\u003c/code\u003e\u003c/a\u003e feat: add MongoDB driver handshake metadata (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/db4cf769306aa9c76b78ce5444543f02f769d95d\"\u003e\u003ccode\u003edb4cf76\u003c/code\u003e\u003c/a\u003e ci: update rich requirement from \u0026lt;15.0.0,\u0026gt;=14.0.0 to \u0026gt;=14.0.0,\u0026lt;16.0.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/bddfd3aac2bf1f43022d54019ca38a19306aa279\"\u003e\u003ccode\u003ebddfd3a\u003c/code\u003e\u003c/a\u003e feat: deprecate 11 tools superseded by SDK capability, MCP servers, or nothin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/strands-agents/tools/commit/b13980c81ab431ab07874c6c512e7c1f60ad6a31\"\u003e\u003ccode\u003eb13980c\u003c/code\u003e\u003c/a\u003e ci: update ruff requirement from \u0026lt;0.14.0,\u0026gt;=0.13.0 to \u0026gt;=0.13.0,\u0026lt;0.17.0 (\u003ca href=\"https://redirect.github.com/strands-agents/tools/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/strands-agents/tools/compare/v0.8.5...v0.8.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.43.32 to 1.43.83\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/77e6582e7806479353a39e176df999e9f5d39783\"\u003e\u003ccode\u003e77e6582\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.83'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/bdb0f450806c1702303e83246fb3aecab284d2c2\"\u003e\u003ccode\u003ebdb0f45\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.83\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/950987a7439b8b5da7f89655b228e55ab7b0e9fd\"\u003e\u003ccode\u003e950987a\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/156b04aeb70aceccb728166f89f3dc15abd04d6f\"\u003e\u003ccode\u003e156b04a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dfc34476cc73ba8d117184854f18439945ce6cd8\"\u003e\u003ccode\u003edfc3447\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e6c550f0ac715e2d941ddf1f29dac1b3bf6b6dec\"\u003e\u003ccode\u003ee6c550f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.82\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/94d6577761a35eaeae56a72bb15c05f2d41dcbd0\"\u003e\u003ccode\u003e94d6577\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/18a131c1144029b5a5a3bf1fb7c3206c963a73e4\"\u003e\u003ccode\u003e18a131c\u003c/code\u003e\u003c/a\u003e Bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4835\"\u003e#4835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1ee61ff25b7b2a11577095ac1d478f975c454b1a\"\u003e\u003ccode\u003e1ee61ff\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d3a3a5280c71f1eede76e1440df93085442c77f4\"\u003e\u003ccode\u003ed3a3a52\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.43.32...1.43.83\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.43.55 to 1.43.83\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b6cdacdd27ff39fc54bc9f9723ba5a60c3c8a512\"\u003e\u003ccode\u003eb6cdacd\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.83'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/bcf4c854c5b99e8a092a2d525abeec25d8491c5c\"\u003e\u003ccode\u003ebcf4c85\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.83\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/073e2f0f4f4605bdbdb894b81a4dd2770843e92c\"\u003e\u003ccode\u003e073e2f0\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/de6b6ea490b9ce83165bd3aa599bdba63b6e5b4e\"\u003e\u003ccode\u003ede6b6ea\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/84f92823a2da87d679122033651a969fdcd4c6c4\"\u003e\u003ccode\u003e84f9282\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.82' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/95e40832c62da978aca8cba61c991bab6672bf3c\"\u003e\u003ccode\u003e95e4083\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.82\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0ba3a7417517f5a49f1c7f0d0072803bee1dbaec\"\u003e\u003ccode\u003e0ba3a74\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b5c1794f453f0a0a56f3f619baba223d9321a3f9\"\u003e\u003ccode\u003eb5c1794\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/5fbd66eb0e298d625e0c557e0d5231afb7ef4277\"\u003e\u003ccode\u003e5fbd66e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.81' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/7459719729728ea90a868f3c059837b66768becb\"\u003e\u003ccode\u003e7459719\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.81\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.43.55...1.43.83\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\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.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\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/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.4...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-aws-api-mcp-server` from 1.4.1 to 1.5.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awslabs-billing-cost-management-mcp-server` from 0.0.29 to 0.0.35\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/awslabs/mcp/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.1 to 6.16.2\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.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e) by \u003ca href=\"https://github.com/RISHIKKASULA\"\u003e\u003ccode\u003e@​RISHIKKASULA\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e) by \u003ca href=\"https://github.com/matthewkogan\"\u003e\u003ccode\u003e@​matthewkogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\u003c/a\u003e) by \u003ca href=\"https://github.com/BashfulHippo\"\u003e\u003ccode\u003e@​BashfulHippo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow repeated page references (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3959\"\u003e#3959\u003c/a\u003e) by \u003ca href=\"https://github.com/yuming-long\"\u003e\u003ccode\u003e@​yuming-long\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove RC4 fallback when cryptography can't provide it (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3853\"\u003e#3853\u003c/a\u003e) by \u003ca href=\"https://github.com/msylw\"\u003e\u003ccode\u003e@​msylw\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.16.1...6.16.2\"\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.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow repeated page references (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3959\"\u003e#3959\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove RC4 fallback when cryptography can't provide it (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.16.2\"\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/1da09878621e5286e00510e4d378dfdf8940e541\"\u003e\u003ccode\u003e1da0987\u003c/code\u003e\u003c/a\u003e REL: 6.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/f6853ccd3ff492309c84060186aabc88ed472ffd\"\u003e\u003ccode\u003ef6853cc\u003c/code\u003e\u003c/a\u003e BUG: Make remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c6d38af1c561c629cd6965f611e8afad9b445ab0\"\u003e\u003ccode\u003ec6d38af\u003c/code\u003e\u003c/a\u003e BUG: Type character widths as float (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3996\"\u003e#3996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/882b3b2bda29ab6f1f877d896f42efbaffd92015\"\u003e\u003ccode\u003e882b3b2\u003c/code\u003e\u003c/a\u003e STY: Type the XMP stream as StreamObject rather than ContentStream (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3995\"\u003e#3995\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4c8f707f3378928dd352c908d4e4fe3c6716af9b\"\u003e\u003ccode\u003e4c8f707\u003c/code\u003e\u003c/a\u003e STY: Accept any sequence of fit arguments in Fit (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/245032144187de4f05d4a4821f86020cdcfd9154\"\u003e\u003ccode\u003e2450321\u003c/code\u003e\u003c/a\u003e STY: Accept any sequence as the annotation border (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3991\"\u003e#3991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2dcab8de11d5bb0a52f359d8244d2c748cefb2f7\"\u003e\u003ccode\u003e2dcab8d\u003c/code\u003e\u003c/a\u003e MAINT: Skip test_appearance_stream_rtl when RTL support is unavailable (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3993\"\u003e#3993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/412975a86033ec2d66c6e4cfd73afd85390a7db0\"\u003e\u003ccode\u003e412975a\u003c/code\u003e\u003c/a\u003e BUG: Be more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ddbfea942cadd1594cb3902a27289a53ca637204\"\u003e\u003ccode\u003eddbfea9\u003c/code\u003e\u003c/a\u003e BUG: Interpolate the reader in the reset_translation error message (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3981\"\u003e#3981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c646ef24857f152afdf84f8b5f8a9d4097bae258\"\u003e\u003ccode\u003ec646ef2\u003c/code\u003e\u003c/a\u003e ROB: Improve RC4 fallback when cryptography can't provide it (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bedrock-agentcore-starter-toolkit` from 0.3.11 to 0.3.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/releases\"\u003ebedrock-agentcore-starter-toolkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBedrock AgentCore Starter Toolkit v0.3.12\u003c/h2\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install bedrock-agentcore-starter-toolkit==0.3.12\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/blob/v0.3.12/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRelease v0.3.11 by \u003ca href=\"https://github.com/agentcore-devx-automation\"\u003e\u003ccode\u003e@​agentcore-devx-automation\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/555\"\u003eaws/bedrock-agentcore-starter-toolkit#555\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: add input validation to memory fields by \u003ca href=\"https://github.com/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/571\"\u003eaws/bedrock-agentcore-starter-toolkit#571\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/nborges-aws\"\u003e\u003ccode\u003e@​nborges-aws\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/pull/570\"\u003eaws/bedrock-agentcore-starter-toolkit#570\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ehttps://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\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/aws/bedrock-agentcore-starter-toolkit/blob/main/CHANGELOG.md\"\u003ebedrock-agentcore-starter-toolkit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.3.12] - 2026-08-19\u003c/h2\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e) (e3fe8a2)\u003c/li\u003e\n\u003cli\u003efix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e) (be24ff2)\u003c/li\u003e\n\u003cli\u003echore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e) (d149aa8)\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/aws/bedrock-agentcore-starter-toolkit/commit/e3fe8a210092db389e4583cec1a58ce5c52ac0ac\"\u003e\u003ccode\u003ee3fe8a2\u003c/code\u003e\u003c/a\u003e fix: add input validation to memory fields (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/be24ff2e19d599544b1c0ce7a29e26e5f45038cd\"\u003e\u003ccode\u003ebe24ff2\u003c/code\u003e\u003c/a\u003e fix: validate trust policy on automanaged execution role (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/commit/d149aa8d024824fb88109a4a2458acd0ea04885e\"\u003e\u003ccode\u003ed149aa8\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.3.11 (\u003ca href=\"https://redirect.github.com/aws/bedrock-agentcore-starter-toolkit/issues/555\"\u003e#555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/aws/bedrock-agentcore-starter-toolkit/compare/v0.3.11...v0.3.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uv` from 0.12.0 to 0.12.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace managed Python installations when upgrading to a newer build of the same version (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Linux \u003ccode\u003es390x\u003c/code\u003e, \u003ccode\u003eppc64le\u003c/code\u003e, and \u003ccode\u003eloongarch64\u003c/code\u003e targets for cross-platform dependency resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21313\"\u003e#21313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry downloads with configured credentials when Azure Storage denies anonymous access to an endpoint configured via \u003ccode\u003eUV_AZURE_ENDPOINT_URL\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21318\"\u003e#21318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse content-based directory hashes to deduplicate extracted wheels in the cache with the \u003ccode\u003econtent-addressed-cache\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19693\"\u003e#19693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReject source archives with hash mismatches before persisting their extracted contents to the cache (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21248\"\u003e#21248\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove pyx specific features (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21182\"\u003e#21182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21183\"\u003e#21183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21184\"\u003e#21184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21185\"\u003e#21185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.12.7\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/uv/releases/download/0.12.7/uv-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/uv/releases/download/0.12.7/uv-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload uv 0.12.7\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-apple-darwin.tar.gz\"\u003euv-aarch64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eApple Silicon macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-apple-darwin.tar.gz\"\u003euv-x86_64-apple-darwin.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eIntel macOS\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-apple-darwin.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-pc-windows-msvc.zip\"\u003euv-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-i686-pc-windows-msvc.zip\"\u003euv-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-i686-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-pc-windows-msvc.zip\"\u003euv-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-x86_64-pc-windows-msvc.zip.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-unknown-linux-gnu.tar.gz\"\u003euv-aarch64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-unknown-linux-gnu.tar.gz.sha256\"\u003echecksum\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.12.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace managed Python installations when upgrading to a newer build of the same version (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Linux \u003ccode\u003es390x\u003c/code\u003e, \u003ccode\u003eppc64le\u003c/code\u003e, and \u003ccode\u003eloongarch64\u003c/code\u003e targets for cross-platform dependency resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21313\"\u003e#21313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetry downloads with configured credentials when Azure Storage denies anonymous access to an endpoint configured via \u003ccode\u003eUV_AZURE_ENDPOINT_URL\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21318\"\u003e#21318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse content-based directory hashes to deduplicate extracted wheels in the cache with the \u003ccode\u003econtent-addressed-cache\u003c/code\u003e preview feature (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/19693\"\u003e#19693\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReject source archives with hash mismatches before persisting their extracted contents to the cache (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21248\"\u003e#21248\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove pyx specific features (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21182\"\u003e#21182\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21183\"\u003e#21183\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21184\"\u003e#21184\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21185\"\u003e#21185\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.12.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-25.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CPython to use OpenSSL 3.5.8 and libffi 3.4.8 \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21295\"\u003e#21295\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReport cache-cleaning space savings from filesystem block allocation and avoid double-counting hard links (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21261\"\u003e#21261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit warnings about unbounded \u003ccode\u003euv_build\u003c/code\u003e requirements to source-distribution builds (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21078\"\u003e#21078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisplay byte counts below 1 KiB without a fractional part (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21237\"\u003e#21237\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003euv workspace metadata --sync --exact\u003c/code\u003e to remove packages outside the selected resolution (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21117\"\u003e#21117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003eartifact-hash-filtering\u003c/code\u003e preview feature to make \u003ccode\u003euv pip compile --generate-hashes\u003c/code\u003e honor \u003ccode\u003e--only-binary\u003c/code\u003e and \u003ccode\u003e--no-binary\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21235\"\u003e#21235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect package-specific \u003ccode\u003eexclude-newer\u003c/code\u003e cutoffs when \u003ccode\u003euv check\u003c/code\u003e selects its \u003ccode\u003ety\u003c/code\u003e executable (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21227\"\u003e#21227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve virtual-environment hints from \u003ccode\u003etar-codec\u003c/code\u003e source-distribution errors when the base interpreter is outside a \u003ccode\u003ebin\u003c/code\u003e directory (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21146\"\u003e#21146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnable profile-guided optimization for Linux x86-64 release binaries (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21001\"\u003e#21001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable profile-guided optimization for Windows x86-64 release binaries (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21003\"\u003e#21003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable profile-guided optimization for macOS ARM64 release binaries (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/21002\"\u003e#21002\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/astral-sh/uv/commit/61291a8ca5477a9ca653f14d2ac5665587c263fa\"\u003e\u003ccode\u003e61291a8\u003c/code\u003e\u003c/a\u003e Bump version to 0.12.7 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21328\"\u003e#21328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/dd217b895fb6b4b663990d1c7a1edd9edec82b5e\"\u003e\u003ccode\u003edd217b8\u003c/code\u003e\u003c/a\u003e de-pyx-ify malformed bearer token test (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21326\"\u003e#21326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/306ee9c8f56f9e9ce73fab28698894f6d531caf2\"\u003e\u003ccode\u003e306ee9c\u003c/code\u003e\u003c/a\u003e remove references to pyx in RFC 9457 handling code (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21187\"\u003e#21187\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6186dcb15635408f9d4030b8d492ad21b5cbbd51\"\u003e\u003ccode\u003e6186dcb\u003c/code\u003e\u003c/a\u003e remove pyx authentication (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21186\"\u003e#21186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/f61b30045a28c04506e3b380b4ebfba8950069a4\"\u003e\u003ccode\u003ef61b300\u003c/code\u003e\u003c/a\u003e remove pyx publication support (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21185\"\u003e#21185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/ba19067bcffc3a6dd5f393dacc0cbf95333870b1\"\u003e\u003ccode\u003eba19067\u003c/code\u003e\u003c/a\u003e remove support for pyx-specific .whl.tar.zst format (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21184\"\u003e#21184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/ad852ce391097fdb6f1a62d8a3f7a3b169980b3e\"\u003e\u003ccode\u003ead852ce\u003c/code\u003e\u003c/a\u003e fix PR labeler automation (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21325\"\u003e#21325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/156dd51134f83f6815908d7ddd9ecd141664e216\"\u003e\u003ccode\u003e156dd51\u003c/code\u003e\u003c/a\u003e Replace Python installations during build upgrades (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/1a486d14e90b0cf75fc8a0074b19add0dfd12152\"\u003e\u003ccode\u003e1a486d1\u003c/code\u003e\u003c/a\u003e Add coverage for Python build upgrades (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21320\"\u003e#21320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/17b195bd714cc6f2d91191ca2cb63d8b5cb94be5\"\u003e\u003ccode\u003e17b195b\u003c/code\u003e\u003c/a\u003e Retry private Azure downloads with authentication (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/21318\"\u003e#21318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.12.0...0.12.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.6.1 to 4.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.2 - 2026-08-10\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\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/pre-commit/pre-commit/commit/9767b6c8211a6bf683875a0afcf2b390457a4b66\"\u003e\u003ccode\u003e9767b6c\u003c/code\u003e\u003c/a\u003e v4.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/42ee3ff5ac1cae639613c9ad002d0502ae82384f\"\u003e\u003ccode\u003e42ee3ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e from pre-commit/npm-build-scripts-11-x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/30566198cb2d05201625f92b660a34c38ffe2dc7\"\u003e\u003ccode\u003e3056619\u003c/code\u003e\u003c/a\u003e fix \u003ccode\u003elanguage: node\u003c/code\u003e for hooks with build scripts and npm 11.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.1...v4.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.3.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiofile` from 3.11.1 to 3.12.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mosquito/aiofile/releases\"\u003eaiofile's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.12.3\u003c/h2\u003e\n\u003cp\u003eUpdate README.md\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.2...3.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multi-library throughput benchmark by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/111\"\u003emosquito/aiofile#111\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd throughput comparison table to the README benchmark section by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/112\"\u003emosquito/aiofile#112\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.1...3.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix double close(), TextFileWrapper.read() overshoot, add closed attribute by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/110\"\u003emosquito/aiofile#110\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\"\u003ehttps://github.com/mosquito/aiofile/compare/3.12.0...3.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump caio dependency to ~0.12.0 by \u003ca href=\"https://github.com/mosquito\"\u003e\u003ccode\u003e@​mosquito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aiofile/pull/109\"\u003emosquito/aiofile#109\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\"\u003ehttps://github.com/mosquito/aiofile/compare/3.11.1...3.12.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/f1de9014ad7b7954e6417fc3c4d178d6ff540973\"\u003e\u003ccode\u003ef1de901\u003c/code\u003e\u003c/a\u003e Rework benchmark: subprocess-per-participant, fixed op count, real latency pe...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/d1c0d9fd665c96166d336a114c3c0ca3babc514a\"\u003e\u003ccode\u003ed1c0d9f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/112\"\u003e#112\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/0434967d158cdb8aa86b0f610d33ba5e798f7b9f\"\u003e\u003ccode\u003e0434967\u003c/code\u003e\u003c/a\u003e Add throughput comparison table to the README benchmark section\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/82b9d5b11e05a6abe74f2704f58c6e6bc71198fb\"\u003e\u003ccode\u003e82b9d5b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/111\"\u003e#111\u003c/a\u003e from mosquito/benchmark/multi-library-throughput\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/ef32a02b31f01e6f1a13f84ff0bf1ac026b70175\"\u003e\u003ccode\u003eef32a02\u003c/code\u003e\u003c/a\u003e Add multi-library throughput benchmark\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/b6ab49e52891793fa4dbaae51290983549821980\"\u003e\u003ccode\u003eb6ab49e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aiofile/issues/110\"\u003e#110\u003c/a\u003e from mosquito/fix/close-twice-and-textwrapper-read\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/955abe86f524ffcec09e435b0f17cf320562c9f0\"\u003e\u003ccode\u003e955abe8\u003c/code\u003e\u003c/a\u003e Bump markdown-pytest to ~0.6.5 and refresh other dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/3d8e378cd129aee38f90bf26ad34ae6f1baa9afe\"\u003e\u003ccode\u003e3d8e378\u003c/code\u003e\u003c/a\u003e Add free-threaded Python (3.13t, 3.14t) to the CI test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/31bd742607f0cf54675512e330378ce9b501e590\"\u003e\u003ccode\u003e31bd742\u003c/code\u003e\u003c/a\u003e Add closed attribute to AIOFile and file wrappers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aiofile/commit/a84a46e64753664efe69d5ba5947bc92cdde5595\"\u003e\u003ccode\u003ea84a46e\u003c/code\u003e\u003c/a\u003e Fix TextFileWrapper.read() returning more characters than requested\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mosquito/aiofile/compare/3.11.1...3.12.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cde...\n\n_Description has been truncated_","html_url":"https://github.com/aws-solutions-library-samples/guidance-for-game-backend-and-infrastructure-agentic-workflows/pull/357","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-solutions-library-samples%2Fguidance-for-game-backend-and-infrastructure-agentic-workflows/issues/357","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/357/packages"}},{"old_version":"1.9.0","new_version":"1.9.2","update_type":"patch","path":null,"pr_created_at":"2026-09-02T02:24:36.000Z","version_change":"1.9.0 → 1.9.2","issue":{"uuid":"5318969026","node_id":"PR_kwDOQUeNIc8AAAABB1Zt5w","number":1218,"state":"closed","title":"build(deps): bump websocket-client from 1.9.0 to 1.9.2","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-09-07T17:31:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T02:24:36.000Z","updated_at":"2026-09-07T17:31:13.000Z","time_to_close":486395,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":null}],"path":null,"ecosystem":"pip"},"body":"## Summary\n\nUpgrade the existing reproducibility-lock pin for websocket-client from 1.9.0 to 1.9.2. The upstream patch releases correct close-frame handling and a close-handshake race, and make malformed redirect/TLS configurations fail explicitly. The retained Jupyter Server 2.20.0 consumer requires websocket-client\u003e=1.7; Python 3.12 satisfies the target's \u003e=3.10 floor.\n\n### Scope\n- [x] One focused, independently revertable change (`DELIVERY-01`): requirements.txt only.\n- [x] KPI impact: **none identified**. No first-party Python import of websocket-client, finance formula, numerical pin, scenario or policy changes.\n- [ ] Changelog fragment: not added; this existing dependency PR retains its one-pin subject. Review, provenance and continuity evidence is persisted externally and in this PR's evidence comments.\n\n### Verification — receipts, not claims\n\nAll local Python commands use `/Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python` (3.12.13), with `DUTCHBAY_VENV` set and active worktree first on `PYTHONPATH`. The shared environment remains unchanged and still has websocket-client1.9.0. Target source tests below load the hash-verified1.9.2 wheel source with that interpreter, without installing another environment.\n\n| Check | Command run | Result |\n|---|---|---|\n| Environment | `DUTCHBAY_VENV=/Users/aruna/Downloads/Dutchbay_EPC_Model/.venv ./check_venv.sh --no-bootstrap` | PASS; Python3.12.13, active worktree imports, no editable/foreign-checkout contamination |\n| Governance | `DUTCHBAY_FLOW_RULESET_CSV=$PWD/go_with_the_flow_rules_v3_0_clean.csv PYTHONPATH=$PWD /Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python dutchbay_bootstrap_rules.py` | 74 active v3.0 rules; full CSV, four RECRUIT-01 modules and pinned frameworks read |\n| Dependency resolution | `/Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python -m pip install --dry-run --disable-pip-version-check -r requirements.txt -c constraints.txt` | exit0; Would install scipy-stubs-1.18.1.0 websocket-client-1.9.2. Unchanged installed packages satisfy other pins; this is not a clean-install proof |\n| Target upstream offline suite | `PYTHONDONTWRITEBYTECODE=1 /Users/aruna/Downloads/Dutchbay_EPC_Model/.venv/bin/python /Users/aruna/Downloads/DutchBay_Oldest_First_Programme_2026-09-07/pr1218/validate_upstream_offline.py` (script SHA25678d7e4a431f6c41f1a741b895d6c734c5d2e94c2f3faf81d0e9a141d19ddcebc) | 221 total:195 passed,26 skipped,0 failures/errors. Byte-exact source from PyPI wheel SHA256 e1a673830a9c7bfa47b1cd3d5e4178f4c9651d80a4eab02c9c23a1c3ec6250ce. No live endpoint/server qualification claimed |\n| Hosted target installation and Grid Study | `gh api repos/arunakulat/dutchbay-epc-model/actions/jobs/101820650300/logs --allow-escape-sequences` captured in memory and filtered | exit0; exact head7506b39f18df706b28faec45ceb6d17cdbb2eb12 checked out; websocket-client1.9.2 installed;57 passed,3 skipped,4 warnings. Job success, full log SHA25637fbd352fd3ae85a7147d44d55dfb21136fadc7069e6729cd313e05066e1b5c5 |\n| Lint / Format / Types | Local rerun not run; hosted `Code Quality Checks` on this head | Hosted job101820594786 success; no first-party Python edits |\n| Diff | `git diff --check`; `git diff d56147c HEAD --stat` | exit0; requirements.txt only,1 insertion/1 deletion |\n| Financial regression | Local rerun not run | No finance/numerical change. Full hosted sharded suite and required Test Summary must complete before merge; ordinary CI is not qualification |\n| Independent review | Separate read-only dependency/security and assurance reviewers; full structured receipts and final rebinds in PR evidence comments | Both initial exact-subject dispositions accepted independently; final preserved-record checks and rebinds required before merge |\n| Live service / deployment / release qualification | not run | Outside dependency-delivery scope; no live Jupyter gateway, proxy, credential, deployment or publication authorization |\n\n### What changed\n\nThe original PR proposed1.9.1 at f3aa4b160458afa14878b1b0359a9b7aa0aace1b. Dependabot independently replaced it with1.9.2 at7506b39f18df706b28faec45ceb6d17cdbb2eb12 during read-only ingress. The programme profile was reissued, the new candidate freshly reviewed and no earlier candidate acceptance carried forward. The historical branch name still ends in1.9.1; the actual lock and delivery target are1.9.2.\n\n### Notes\n\nEvidence directory: `/Users/aruna/Downloads/DutchBay_Oldest_First_Programme_2026-09-07/pr1218/`. Original candidate recovery bundle, primary PyPI metadata/wheels, frozen subject manifest, independent reviews, hosted evidence and successor handover are retained there. Exact external review content and hashes are also published in this PR; reviewer rebinds must be independently checked again immediately before merge.\n\nStrict protected current-base policy and all four required contexts remain controlling: Test Summary,fastlane,smoke,Verification receipts (VERIFY-01). A missing context is unsatisfied. Issue1110 stays OPEN; production assembly authority stays empty. All existing release,lender,Board,professional,publication,deployment and HOLD boundaries remain unchanged.\n","html_url":"https://github.com/arunakulat/dutchbay-epc-model/pull/1218","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/arunakulat%2Fdutchbay-epc-model/issues/1218","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1218/packages"}},{"old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.1","update_type":null,"path":null,"pr_created_at":"2026-09-02T02:03:03.000Z","version_change":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 → !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.1","issue":{"uuid":"5318836355","node_id":"PR_kwDOBFHcf88AAAABB1TIaQ","number":2706,"state":"closed","title":"Update websocket-client requirement from !=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0 to !=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.1","user":"dependabot[bot]","labels":["cncf-cla: yes","size/XS","do-not-merge/release-note-label-needed","needs-kind","dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-09-04T02:02:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T02:03:03.000Z","updated_at":"2026-09-04T02:02:49.000Z","time_to_close":172784,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"websocket-client","old_version":"!=0.40.0,!=0.41.*,!=0.42.*,\u003e=0.32.0","new_version":"!=0.40.0,!=0.41.0.dev,!=0.42.0.dev,\u003e=1.9.1","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\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/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v0.32.0...v1.9.1\"\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/kubernetes-client/python/pull/2706","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-client%2Fpython/issues/2706","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2706/packages"}},{"old_version":"\u003e=1.6.0","new_version":"\u003e=1.9.0","update_type":"minor","path":"/Finja-music/finja-everything-in-once","pr_created_at":"2026-08-07T16:26:36.000Z","version_change":"\u003e=1.6.0 → \u003e=1.9.0","issue":{"uuid":"5092066374","node_id":"PR_kwDOPbEP8c78IT7O","number":15,"state":"open","title":"deps(deps): update websocket-client requirement from \u003e=1.6.0 to \u003e=1.9.0 in /Finja-music/finja-everything-in-once","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-08-07T16:26:36.000Z","updated_at":"2026-08-07T16:27:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): update","packages":[{"name":"websocket-client","old_version":"\u003e=1.6.0","new_version":"\u003e=1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"}],"path":"/Finja-music/finja-everything-in-once","ecosystem":"pip"},"body":"Updates the requirements on [websocket-client](https://github.com/websocket-client/websocket-client) 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.8.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eon_reconnect\u003c/code\u003e parameter to WebSocketApp to handle callback ambiguity (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/972\"\u003e#972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove handling of SSLEOFError and use reconnect bool (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/961\"\u003e#961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor linting and docs CI build upgrades (981c00e, 75ba91a, bec2608)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.7.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRenamed \u003ccode\u003emask\u003c/code\u003e variable in ABNF to prevent name collision with \u003ccode\u003emask()\u003c/code\u003e function (9b51f73)\u003c/li\u003e\n\u003cli\u003eFixed old http import of HTTPStatus in _handshake.py (9b51f73)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003esend_text()\u003c/code\u003e and \u003ccode\u003esend_bytes()\u003c/code\u003e to _app.py (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved typehint support (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/953\"\u003e#953\u003c/a\u003e, 9b51f73, 8b73d00)\u003c/li\u003e\n\u003cli\u003eGeneral readability improvements, made all string concatenations use f-strings (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/909\"\u003e#909\u003c/a\u003e, 780584f, 3eabc6e)\u003c/li\u003e\n\u003cli\u003eApplied black formatting style to code (da7f286)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.4\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/952\"\u003e#952\u003c/a\u003e, add support for HTTP 307 and 308 redirect codes (69468ad)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix type hints issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/949\"\u003e#949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python beta release 3.12 in CI (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/946\"\u003e#946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd maintainer email in setup.py (3d464fc)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for SSLKEYLOGFILE environment variable (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/943\"\u003e#943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for callable header arguments (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/932\"\u003e#932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChange handling of proxy environment variables, is_secure set to true now prevents http_proxy from getting used (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Dispatcher keyboard interrupt. Should solve reconnect loop with rel (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.6.0\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix teardown issue when ping thread is not properly ended (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/918\"\u003e#918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix double ping wait time on first ping (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/912\"\u003e#912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMinor type hints improvements (eda6724, 54b3013)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.5.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logic to avoid error in the case where content-length header does not exist, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/911\"\u003e#911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wsdump.py script typing, bug introduced in 1.5.2 (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/914\"\u003e#914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.6.0...v1.9.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/JohnV2002/Finja-AI-Ecosystem/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnV2002%2FFinja-AI-Ecosystem/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"1.8.0","new_version":"1.9.0","update_type":"minor","path":"/gateway","pr_created_at":"2026-05-17T20:22:22.000Z","version_change":"1.8.0 → 1.9.0","issue":{"uuid":"4464825372","node_id":"PR_kwDOSIAG287cb6Go","number":45,"state":"open","title":"chore(deps): bump the all group in /gateway with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-17T20:22:22.000Z","updated_at":"2026-05-17T20:23:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"all","update_count":5,"packages":[{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockify","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/novnc/websockify"},{"name":"cryptography","old_version":"44.0.0","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"pymupdf","old_version":"1.25.3","new_version":"1.27.2.3","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"}],"path":"/gateway","ecosystem":"pip"},"body":"Bumps the all group in /gateway with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [websockify](https://github.com/novnc/websockify) | `0.12.0` | `0.13.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `48.0.0` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.25.3` | `1.27.2.3` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n\nUpdates `websocket-client` 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/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cp\u003e1.9.0\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e1.9.0\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 support (EOL), add Python 3.13 (5f25030)\u003c/li\u003e\n\u003cli\u003eRemove localhost and 127.0.0.1 from default NO_PROXY list (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/994\"\u003e#994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport IPv6 CIDRs in the no_proxy option (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread safety condition in \u003ccode\u003eteardown()\u003c/code\u003e to improve \u003ccode\u003erun_forever()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1024\"\u003e#1024\u003c/a\u003e by chunking data, recursion in on_error callback, thread leak in \u003ccode\u003e_stop_ping_thread()\u003c/code\u003e, avoid implicit None in \u003ccode\u003erecv()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid bare except clauses for better error handling (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve mypy type errors (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/996\"\u003e#996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1006\"\u003e#1006\u003c/a\u003e, 813d570)\u003c/li\u003e\n\u003cli\u003eTest coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eflake8 linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\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/websocket-client/websocket-client/commit/e46a8fe2dbc74f88a2cfa749f2499f7cc6f31409\"\u003e\u003ccode\u003ee46a8fe\u003c/code\u003e\u003c/a\u003e 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/ab81eab9c89da8848cabe8057afc921eed8f78b3\"\u003e\u003ccode\u003eab81eab\u003c/code\u003e\u003c/a\u003e Bug fixes (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/63058ab33be55dd955f25a403da92372394309fc\"\u003e\u003ccode\u003e63058ab\u003c/code\u003e\u003c/a\u003e Run forever socket close fix (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6861ee417b65c183a81671bc57cace26c9c7ee29\"\u003e\u003ccode\u003e6861ee4\u003c/code\u003e\u003c/a\u003e Use ipaddress module for no_proxy parsing (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/729bdb8fc063397d298261ed6f2288f272b7f6de\"\u003e\u003ccode\u003e729bdb8\u003c/code\u003e\u003c/a\u003e Coverage improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1035\"\u003e#1035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/f22579afed961d89a306d0018f373922bf567d22\"\u003e\u003ccode\u003ef22579a\u003c/code\u003e\u003c/a\u003e Linting improvements (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/9564030bed1112497bf1c879673870419365a064\"\u003e\u003ccode\u003e9564030\u003c/code\u003e\u003c/a\u003e Change echo URL in docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/c0fe0f7a18867599c9b62fc61f71036a8d5bdfcf\"\u003e\u003ccode\u003ec0fe0f7\u003c/code\u003e\u003c/a\u003e apply black formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/813d570fc95114aa48e8ddf8b767390a1a6985f7\"\u003e\u003ccode\u003e813d570\u003c/code\u003e\u003c/a\u003e Resolve all mypy errors, with AI assistance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/6020f37e784b77f6627b38797595f038aa76f26e\"\u003e\u003ccode\u003e6020f37\u003c/code\u003e\u003c/a\u003e black formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websockify` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/novnc/websockify/releases\"\u003ewebsockify's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003ch1\u003eMajor Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Server_Name_Indication\"\u003eSNI\u003c/a\u003e is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\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/novnc/websockify/blob/master/CHANGES.txt\"\u003ewebsockify's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python \u0026lt; 3.6 has been dropped.\u003c/li\u003e\n\u003cli\u003eSNI is enabled when connecting to an SSL target as an SSL client.\u003c/li\u003e\n\u003cli\u003eThe TokenRedis plugin handles namespaces.\u003c/li\u003e\n\u003cli\u003eHeaders are sanitized before being passed to authentication plugins.\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/novnc/websockify/commit/e81894751365afc19fe64fc9d0e5c6fc52655c36\"\u003e\u003ccode\u003ee818947\u003c/code\u003e\u003c/a\u003e websockify 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0d519b9c18139bcdee7f1bdb9dc785be26bdab29\"\u003e\u003ccode\u003e0d519b9\u003c/code\u003e\u003c/a\u003e Fix fake headers dict in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/187e204ce403e7aac0ea67348eaad012a68f10bb\"\u003e\u003ccode\u003e187e204\u003c/code\u003e\u003c/a\u003e Clear out sensitive fake headers from client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/417210f2cf8db9cd3cd9d86c45ef954778176b0e\"\u003e\u003ccode\u003e417210f\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/so-saf/websockify\"\u003ehttps://github.com/so-saf/websockify\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/245fd08e52604c76e877c94da1dc286f87c90c75\"\u003e\u003ccode\u003e245fd08\u003c/code\u003e\u003c/a\u003e Use standard line endings in sysloghandler.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/3f205f7cc6131368631c8b0cb17c3aa5689507e9\"\u003e\u003ccode\u003e3f205f7\u003c/code\u003e\u003c/a\u003e drop python\u0026lt;3.6 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/0af3404ec91ae827275af0a8e474add5afffaf81\"\u003e\u003ccode\u003e0af3404\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/5989d31ebf1a84bc6c6bdb7b32b4a9ea5437f36d\"\u003e\u003ccode\u003e5989d31\u003c/code\u003e\u003c/a\u003e Add namespace value to TokenRedis source\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/b6c02b13e3ce706dff6f96f754ef1682d9062258\"\u003e\u003ccode\u003eb6c02b1\u003c/code\u003e\u003c/a\u003e Include host in TLS setup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novnc/websockify/commit/f632fa0285181c1ff1a39c9c4b36795e3f6d9373\"\u003e\u003ccode\u003ef632fa0\u003c/code\u003e\u003c/a\u003e Use SSLContext.wrap_context() for SSL/TLS sockets\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/novnc/websockify/compare/v0.12.0...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 44.0.0 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\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/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pymupdf` from 1.25.3 to 1.27.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/pymupdf/releases\"\u003epymupdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.3 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4928\"\u003e#4928\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4942\"\u003e#4942\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4958\"\u003e#4958\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on\n\u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4902\"\u003e#4902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4932\"\u003e#4932\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePyMuPDF-1.27.2 released\u003c/h2\u003e\n\u003cp\u003eWheels for Windows, Linux and MacOS, and the sdist, are available on \u003ca href=\"https://pypi.org\"\u003ehttps://pypi.org\u003c/a\u003e and can be installed in the usual way, for example:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython -m pip install --upgrade pymupdf\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pymupdf/PyMuPDF/blob/main/changes.txt\"\u003epymupdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange Log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.3\u003c/strong\u003e (2026-04-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4928 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4928\u0026gt;\u003c/code\u003e_: pymupdf.Document.scrub raises AttributeError for a document with annotations\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4942 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4942\u0026gt;\u003c/code\u003e_: bug: IndexError for Page.get_links after Page.clip_to_rect\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4954 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4954\u0026gt;\u003c/code\u003e_: get_drawings() returns incorrect lineJoin and width\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4958 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4958\u0026gt;\u003c/code\u003e_: bug: inserting rotated pages to another document messes up link coordinates\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect generation of \u003ccode\u003elineJoin j\u003c/code\u003e in PDF content, introduced in 1.27.2.2.\u003c/li\u003e\n\u003cli\u003eAllow build to (incorrectly) claim to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e. See setup.py for details.\u003c/li\u003e\n\u003cli\u003eUse pypi.org's pipcl package instead of our own pipcl.py file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.2\u003c/strong\u003e (2026-03-20)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4902 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4902\u0026gt;\u003c/code\u003e_: Incorrect linewidth in elements returned by Page.get_texttrace()\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4932 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4932\u0026gt;\u003c/code\u003e_: \u0026quot;Page\u0026quot; has no attribute \u0026quot;find_tables\u0026quot; in PyMuPDF 1.27\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eAnnot.__bool__()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChanges in version 1.27.2.\u003c/strong\u003e (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUse MuPDF-1.27.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFixed\u003c/strong\u003e \u003ccode\u003e4903 \u0026lt;https://github.com/pymupdf/PyMuPDF/issues/4903\u0026gt;\u003c/code\u003e_: Typing broken because of \u003ccode\u003e*_forward_decl\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOther:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRetrospectively marked \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4907\"\u003e#4907\u003c/a\u003e as fixed in pymupdf-1.27.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eget_textpage_ocr()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eFor partial OCR, \u003cstrong\u003eall\u003c/strong\u003e page areas outside legible text are now OCRed, not\njust those within images. This means that OCR will now also be performed\nfor vector graphics, and for text containing illegible characters.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProvide a Linux wheel for free-threading python,\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/bf51516c1b1146d357e3705473f7dea6a405a589\"\u003e\u003ccode\u003ebf51516\u003c/code\u003e\u003c/a\u003e Update version to 1.27.2.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/e5bddbbf4f4633ce2b6261f18ab6c9fb8a8bb857\"\u003e\u003ccode\u003ee5bddbb\u003c/code\u003e\u003c/a\u003e scripts/ tests/: updated to match new location of pipcl.py in src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/eda615d19e56ca9b7123b0030773fea3a3cf8dc6\"\u003e\u003ccode\u003eeda615d\u003c/code\u003e\u003c/a\u003e Move pipcl.py and wdev.py into src/.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/a7fe8b3683cda27684a5863a2de38e2b80165feb\"\u003e\u003ccode\u003ea7fe8b3\u003c/code\u003e\u003c/a\u003e changes.txt: updates for next release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/61da30ac418846be0b0a559ca407a3ad786f5d5f\"\u003e\u003ccode\u003e61da30a\u003c/code\u003e\u003c/a\u003e tests/test_drawings.py: New tests for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4954\"\u003e#4954\u003c/a\u003e: test_4954_1() test_4954_2().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/5445fc01c6edb3397df2768febddf4da9802d9ae\"\u003e\u003ccode\u003e5445fc0\u003c/code\u003e\u003c/a\u003e docs/conf.py: change how we look for version numbers in setup.py and scripts/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/1792ef0da7f801865e79278d1644b31de96c50f5\"\u003e\u003ccode\u003e1792ef0\u003c/code\u003e\u003c/a\u003e pyproject.toml: require package pipcl for building.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/237f0976fa75fd010ab5d838dc1ce714d7cd87ce\"\u003e\u003ccode\u003e237f097\u003c/code\u003e\u003c/a\u003e tests/: fix tests if we are incorrectly claiming to be thread safe.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/cd89bb04ee92c6e1f831bb5ae6d84ddd296987e4\"\u003e\u003ccode\u003ecd89bb0\u003c/code\u003e\u003c/a\u003e tests/conftest.py: also install pipcl, as we move to using pipcl package.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pymupdf/PyMuPDF/commit/341eab2d3b10a03cdd34b64a6acaeb38f43e8d9b\"\u003e\u003ccode\u003e341eab2\u003c/code\u003e\u003c/a\u003e setup.py: added support for incorrectly claiming to be thread-safe, for \u003ca href=\"https://redirect.github.com/pymupdf/pymupdf/issues/4760\"\u003e#4760\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pymupdf/pymupdf/compare/1.25.3...1.27.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-docx` from 1.1.2 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-openxml/python-docx/blob/master/HISTORY.rst\"\u003epython-docx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.0 (2025-06-16)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for comments\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8, add testing for Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e45454602b53e8e572b179ccf1c91093ec9f4ed7\"\u003e\u003ccode\u003ee454546\u003c/code\u003e\u003c/a\u003e release: prepare v1.2.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/1fe660198aab18a421c95d019f53b2aa22d2fe2f\"\u003e\u003ccode\u003e1fe6601\u003c/code\u003e\u003c/a\u003e build: small adjustments for tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/4fbe1f684e08aa7eebb0ce6bfedfce512b5c95a2\"\u003e\u003ccode\u003e4fbe1f6\u003c/code\u003e\u003c/a\u003e docs: add Comments docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/a809d6cc8aec18648850d8b94d554f05621e433a\"\u003e\u003ccode\u003ea809d6c\u003c/code\u003e\u003c/a\u003e comments: add Comment.text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/e3a321d26195fdd6e368f59b63be06b1277dac14\"\u003e\u003ccode\u003ee3a321d\u003c/code\u003e\u003c/a\u003e comments: add Run.mark_comment_range()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/af3b973dd2c938f6851537978fe76f4f5e91dcc9\"\u003e\u003ccode\u003eaf3b973\u003c/code\u003e\u003c/a\u003e comments: add Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/66da52204db395466cc7ea033af0f5bffd228953\"\u003e\u003ccode\u003e66da522\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Document.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/761f4ccd7751afeeaa5fff5c6f47325c3e0970fa\"\u003e\u003ccode\u003e761f4cc\u003c/code\u003e\u003c/a\u003e comments: add Comment.author, .initials setters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/8ac9fc4f6b50b9b7f208974e853f1995d63a834a\"\u003e\u003ccode\u003e8ac9fc4\u003c/code\u003e\u003c/a\u003e comments: add Comments.add_comment()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-openxml/python-docx/commit/d360409273a9fdfd2d6a26a7f35b8f3bfc781f04\"\u003e\u003ccode\u003ed360409\u003c/code\u003e\u003c/a\u003e xfail: acceptance test for Comment mutations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-openxml/python-docx/compare/v1.1.2...v1.2.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/yourhq/yourhq/pull/45","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/yourhq%2Fyourhq/issues/45","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/45/packages"}}]}